用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]
这样的乱序结果)。
使用多进程的时候, 往往也想知道代码的运行进度, 还需要多久。 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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?