您当前的位置: 首页 >  Python

B417科研笔记

暂无认证

  • 3浏览

    0关注

    154博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【使用python多进程加速程序】multiprocessing与 tqdm 实现多进程

B417科研笔记 发布时间:2020-08-04 23:34:37 ,浏览量:3

用multiprocessing库的map方法实现多进程
from multiprocessing import Pool

def f(x):
    return x*x

if __name__ == '__main__':
    with Pool(5) as p:
        print(p.map(f, [1, 2, 3]))

这是官网的示例。 Pool(5)中的5指的是要开的进程数。 p.map()的用法就是, 输入两个参数, 第一个参数是你要执行的函数, 第二个参数则是需要被执行的参数列表。 p.map()将负责把列表中的元素一个个作为要执行函数的输入参数,执行函数。

上述代码的输出结果为: [1,4,9]。 即.map()函数的返回值就是将每个元素输入执行函数后的返回值用列表的形式, 返回这个列表。

注意,尽管你需要遍历的参数列表可能被分配到了多个进程中同时运行,但p.map()函数会非常智能地仍按照你参数列表的顺序, 输出对应的结果。 (所以你不会得到[1, 9, 4]这样的乱序结果)。

用tqdm和imap实现多进程进度监控

使用多进程的时候, 往往也想知道代码的运行进度, 还需要多久。 python里最简便的进度条监视库就是tqdm了。 然而直接使用tqdm往往只能监测单进程, 多进程时就不行了。

这时候,就该表演真正的技术了!

例子:

from multiprocessing import Pool
from tqdm import tqdm


def f(x):
    return x * x


if __name__ == '__main__':
    with Pool(5) as p:
        print(list((tqdm(p.imap(f, range(10)), total=10, desc='监视进度'))))

输出结果为:

监视进度: 100%|██████████| 10/10 [00:00            
关注
打赏
1649265742
查看更多评论
0.0387s