python进程池和线程池,python3进程池
进程池Pool
当要创建的子流程数量较少时,可以直接使用多重处理中的流程来动态生成多个流程。但是如果有几百个甚至几千个目标,手工创建进程的工作量是巨大的,可以使用多处理模块提供的池方法。
初始化池时,您可以指定进程的数量。当一个新的请求提交到池中时,如果池未满,将创建一个新的进程来执行该请求。但是,如果池中的进程数达到了指定的值,请求将一直等待,直到池中的一个进程完成,并且将创建一个新的进程来执行。
frommultiprocessingimportPool
进口货
进口时间
随机输入
defworker(消息):
t_start=time.time()
Print(%d进程开始执行%d%(os.getpid(),msg))
#random.random()随机生成0到1之间的浮点数。
time.sleep(random.random()*2)
t_stop=time.time()
Print(msg,已完成执行,耗时%0.2f%(t_stop-t_start))
if__name__==__main__:
Po=Pool(3)#用3个进程定义一个进程池。
foriinrange(0,10):
#Pool.apply_async(要调用的目标,(传递给目标的参数祖先,))
#每个周期都会用自由子进程调用目标。
po.apply_async(worker,(I,))
打印(-开始-)
Po.close()#关闭进程池,之后Po将不会接收新的请求。
Po.join()#等待Po中的所有子流程执行完毕,必须放在close语句之后。
Print (-end-)运行如下:
-开始-
353进程开始执行0
454进程开始执行1
455进程开始执行2
2.执行后需要0.20。
355进程开始执行3
1,执行后,花了1.19。
454该过程开始执行4
4.执行完之后,花了0.37。
454进程开始执行5
0,执行完毕,拿了1.57。
453进程开始执行6
5.执行完之后,花了0.19。
454进程开始执行7
3.行刑后,耗时1.63小时。
455进程开始执行8
6.执行后,花了0.49。
453进程开始执行9
8,执行后,花了0.75。
7.执行完了,花了0.90。
9,执行后,取了0.63。
-END相关推荐:《Python视频教程》
multiprocessing.Pool常用函数解析:
Apply_async(func[,args[,kwds]]):以非阻塞方式调用func(并行执行,阻塞方式必须等待上一个进程退出后才能执行下一个进程),args是传递给func的参数列表,kwds是传递给func的关键字参数列表;
Apply(func[,args[,kwds]]):通过阻塞调用func。
Close():关闭池,使其不接受新任务;
Terminate():无论任务是否完成都立即终止;
Join():主进程被阻塞,等待子进程退出,必须在close或terminate后使用;
p>apply堵塞式
frommultiprocessingimportPool运行结果为:importos
importtime
importrandom
defworker(msg):
t_start=time.time()
print("%d进程开始执行%d"%(os.getpid(),msg))
#random.random()随机生成0~1之间的浮点数
time.sleep(random.random()*2)
t_stop=time.time()
print(msg,"执行完毕,耗时%0.2f"%(t_stop-t_start))
if__name__=='__main__':
po=Pool(3)#定义一个进程池,进程数3
foriinrange(0,10):
#Pool.apply_async(要调用的目标,(传递给目标的参数元祖,))
#每次循环将会用空闲出来的子进程去调用目标
po.apply(worker,(i,))
print("----start----")
po.close()#关闭进程池,关闭后po不再接收新的请求
po.join()#等待po中所有子进程执行完成,必须放在close语句之后
print("-----end-----")
4400进程开始执行0说明:通过运行结果可以看出来,阻塞式会等进程池中的进程都执行完毕了才会运行主进程的start和end的打印0,执行完毕,耗时1.89
4401进程开始执行1
1,执行完毕,耗时1.91
4402进程开始执行2
2,执行完毕,耗时1.64
4400进程开始执行3
3,执行完毕,耗时1.16
4401进程开始执行4
4,执行完毕,耗时1.85
4402进程开始执行5
5,执行完毕,耗时0.29
4400进程开始执行6
6,执行完毕,耗时0.19
4401进程开始执行7
7,执行完毕,耗时1.19
4402进程开始执行8
8,执行完毕,耗时0.61
4400进程开始执行9
9,执行完毕,耗时1.08
----start----
-----end-----
相关推荐:
Python中的进程是什么
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。