手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

Python多进程Pool进程池的使用

时间:2024-10-16 01:46:04

1、打开Python开发工具IDLE,新建‘poll.py’文件,写代码如下:from multiprocessing import Pooldef fun(x): return x*2if __name__ == '__main__': p = Pool(5) #如果参数为空,默认为os.cpu_count() print(p.map(fun, [1, 2, 3]))注意这里一定要写if __name__ == '__main__':在多进程程序里,必须指明主进程

Python多进程Pool进程池的使用

2、F5运行程序,很快打印出列表每项乘以2后的结果,[2, 4, 6] 这个计算的速度肯定比不用多进程快,尤其数据很大的时候,这里就不去测试。

Python多进程Pool进程池的使用

3、还有另外一种方法,孀晏弁钾也能实现同样的功能,改写‘pool.py’代码如下:from multiprocessing import Pooldef fun(x): return x*2if __n锾攒揉敫ame__=='__main__': p = Pool(5) list1=[] for i in range(5): print (i) res = p.apply_async(fun,[i,]) list1.append(res) for j in list1: print (j.get())这个看起来更好理解一点,apply_async(fun,[i,])是创建异步进程的方法,进程创建后立即执行,get()用于获取内容,注意不能再第一个循环里用,不然会等待进程get返回值阻塞主进程的继续执行。

Python多进程Pool进程池的使用

4、F5运行程序,很快打印出每项乘以2后的结果:0123402468

Python多进程Pool进程池的使用

5、如果需要等待所有进程结束再继续执行主进旯皱镢涛程,需要改写代码如下:from multiprocessing import Pooldef fun(x): return x*2if __na罪焐芡拂me__=='__main__': p = Pool(5) list1=[] for i in range(5): print (i) res = p.apply_async(fun,[i,]) list1.append(res) p.close() p.join() print('进程池创建的进程已结束') for j in list1: print (j.get())p.close(),只是不允许再使用进程池创建新进程,必须在p.join()前

Python多进程Pool进程池的使用

6、F5运行程序,很快打印出进程池创建进程结束的消息以及每项乘以2后的结果:01234进程池创建的进程已结束02468

Python多进程Pool进程池的使用
© 手抄报圈