日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

5-14 进程池

發布時間:2025/7/25 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 5-14 进程池 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

python中的進程池

1.進程池的概念

python中,進程池內部會維護一個進程序列。當需要時,程序會去進程池中獲取一個進程。

如果進程池序列中沒有可供使用的進程,那么程序就會等待,直到進程池中有可用進程為止。

2.進程池的內置方法

  • apply 從進程池里取一個進程并同步執行
  • apply_async 從進程池里取出一個進程并異步執行
  • terminate 立刻關閉進程池
  • join 主進程等待所有子進程執行完畢,必須在close或terminete之后
  • close 等待所有進程結束才關閉線程池

同步是指一個進程在執行某個請求的時候,必須要到收到對方返回的信息才繼續執行下去

異步是指進程在執行某個請求時,不管其他的進程的狀態,這個進程就執行后續操作;
當有消息返回時系統會通知進程進行處理,這樣可以提高執行的效率

例如:打電話就是同步通信,發信息就是異步通信。

3.進程池的使用

代碼如下:

from multiprocessing import Pool import timedef func(args): time.sleep(1) #程序休眠1s print("%s------>%s"%(args,time.ctime())) #打印參數及時間 if __name__=="__main__": p1=Pool(2) #設定開啟2個進程池 for i in range(10): p1.apply_async(func=func,args=(i,)) #設定異步執行任務 p1.close() #關閉進程池 time.sleep(2) #程序休眠2s p1.terminate() #關閉進程池 p1.join() #阻塞進程池 print("ending") #打印結束語句

程序執行結果:

0------>Thu Jul 20 20:18:43 2017 1------>Thu Jul 20 20:18:43 2017 ending

可以看到,在程序執行過程中,關閉進程池,則程序會立即停止,不會再繼續執行后續語句。

4.修改程序,使程序能夠執行全部的任務

代碼如下:

from multiprocessing import Pool import timedef func(args): time.sleep(1) #休眠1s print("%s------>%s"%(args,time.ctime())) #打印傳遞的參數及時間 if __name__=="__main__": p1=Pool(2) #定義2個進程池 for i in range(10): #定義循環10次 p1.apply_async(func=func,args=(i,)) #異步執行任務 p1.close() #等待所有的任務都完成才關閉進程池 p1.join() print("ending")

執行結果如下:

0------>Thu Jul 20 20:19:12 2017 1------>Thu Jul 20 20:19:12 2017 2------>Thu Jul 20 20:19:13 2017 3------>Thu Jul 20 20:19:13 2017 4------>Thu Jul 20 20:19:14 2017 5------>Thu Jul 20 20:19:14 2017 6------>Thu Jul 20 20:19:15 2017 7------>Thu Jul 20 20:19:15 2017 8------>Thu Jul 20 20:19:16 2017 9------>Thu Jul 20 20:19:16 2017 ending

轉載于:https://www.cnblogs.com/yzxing/p/9038122.html

總結

以上是生活随笔為你收集整理的5-14 进程池的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。