进程池
Posted python
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程池相关的知识,希望对你有一定的参考价值。
进程池内部维护一个进程序列,当使用时,则去进程池中获取一个进程,如果进程池序列中没有可供使用的进进程,那么程序就会等待,直到进程池中有可用进程为止。
进程池中有两个方法:
- apply 同步
- apply_async 异步
from multiprocessing import Process,Pool
import time,os
def Foo(i):
time.sleep(1)
print(i)
return i+100 #这个返回值是给回调函数的参数
def Bar(arg): #arg接收Foo函数的返回值
print(os.getpid())
print(os.getppid())
print(‘logger:‘,arg)
pool = Pool(5) #定义进程池 最大5个进程数
Bar(1)
print("----------------")
for i in range(100):
#pool.apply(func=Foo, args=(i,))
#pool.apply_async(func=Foo, args=(i,))
pool.apply_async(func=Foo, args=(i,),callback=Bar) #callback 回调函数,Foo执行一次,就执行一次回调函数
pool.close() #这必须在join之前,不然报错
pool.join()
print(‘end‘)
以上是关于进程池的主要内容,如果未能解决你的问题,请参考以下文章
在 Python 多处理进程中运行较慢的 OpenCV 代码片段