python 进程池的使用和坑

 1 from multiprocessing import Pool,Process
 2 import time,os
 3 def Foo(a):#创建函数
 4     time.sleep(2)
 5     print('in the process:',os.getpid(),os.getppid())
 6     return a+100
 7 
 8 def bar(arga):#创建函数
 9     print('---->',arga)
10 if __name__ == '__main__':
11     print('父进程ID:',os.getpid())
12     pool = Pool(2)#创建进程池最大容量为2,最多允许2个进程同时运行,参照线程信号量模式
13     for i in range(10):#创建10个进程
14         pool.apply_async(func=Foo,args=(i,),callback=bar)#创建线程,参数1调用函数,参数2设置i为函数FOO参数,参数3为返回函数
15         #参数三为回调函数,将FOO函数的返回值作为参数调用bar函数。
16         #pool.apply(func=Foo,args=(i,),callback=bar)#串行
17          #pool.apply_async(func=Foo,args=(i,),callback=bar)#并行
18 
19     pool.close()#关闭
20     #pool.join()#如果没有.join语句,程序不执行就会关闭。这里是个大坑。
from multiprocessing import Pool,Process
import time,os
def Foo(a):#创建函数
time.sleep(2)
print('in the process:',os.getpid(),os.getppid())
return a+100

def bar(arga):#创建函数
print('---->',arga)
if __name__ == '__main__':
print('父进程ID:',os.getpid())
pool = Pool(2)#创建进程池最大容量为2,最多允许2个进程同时运行,参照线程信号量模式
for i in range(10):#创建10个进程
pool.apply_async(func=Foo,args=(i,),callback=bar)#创建线程,参数1调用函数,参数2设置i为函数FOO参数,参数3为返回函数
#参数三为回调函数,将FOO函数的返回值作为参数调用bar函数。
#pool.apply(func=Foo,args=(i,),callback=bar)#串行
#pool.apply_async(func=Foo,args=(i,),callback=bar)#并行

pool.close()#关闭
#pool.join()#如果没有.join语句,程序不执行就会关闭。
原文地址:https://www.cnblogs.com/hushuning/p/7919690.html