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語句,程序不執行就會關閉。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM