电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python 進程池pool使用詳解

瀏覽:7日期:2022-07-08 10:27:34

和選用線程池來關系多線程類似,當程序中設置到多進程編程時,Python 提供了更好的管理多個進程的方式,就是使用進程池。

在利用 Python 進行系統管理的時候,特別是同時操作多個文件目錄,或者遠程控制多臺主機,并行操作可以節約大量的時間。

當被操作對象數目不大時,可以直接利用 multiprocessing 中的 Process 動態生成多個進程,十幾個還好,但如果是上百個,上千個目標,手動的去限制進程數量卻又太過繁瑣,此時可以發揮進程池的功效。

Pool可以提供指定數量的進程供用戶調用,當有新的請求提交到 pool 中時,如果進程池還沒有滿,那么就會創建一個新的進程用來執行該請求;但如果池中的進程數已經達到規定最大值,那么該請求就會等待,直到池中有進程結束,才會創建新的進程來它。

Python multiprocessing 模塊提供了 Pool() 函數,專門用來創建一個進程池,該函數的語法格式如下:

multiprocessing.Pool( processes )

其中,processes 參數用于指定該進程池中包含的進程數。

如果進程是 None,則默認使用 os.cpu_count() 返回的數字(根據本地的 cpu 個數決定,processes 小于等于本地的 cpu 個數)。

請看下面的實例:

from multiprocessing import Poolimport osimport timeimport randomdef worker(msg): t_start = time.time() print('%s開始執行,進程號為%d' % (msg, os.getpid())) # 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 for i in range(0, 8): # Pool().apply_async(要調用的目標,(傳遞給目標的參數元祖,)) # 每次循環將會用空閑出來的子進程去調用目標 po.apply_async(worker, (i,)) print('----start----') # 關閉進程池,關閉后po不再接收新的請求 po.close() # 等待po中所有子進程執行完成,必須放在close語句之后 po.join() print('-----end-----')

運行結果:

python 進程池pool使用詳解

multiprocessing.Pool 常用方法說明

apply_async(func[, args[, kwds]]) :使用非阻塞方式調用 func(并行執行,堵塞方式必須等待上一個進程退出才能執行下一個進程),args 為傳遞給 func 的參數列表,kwds 為傳遞給 func 的關鍵字參數列表。

close():關閉 Pool,使其不再接受新的任務。

terminate():不管任務是否完成,立即終止。

join():主進程阻塞,等待子進程的退出, 必須在 close 或 terminate 之后使用。

進程池中的 Queue

如果要使用 Pool 創建進程,就需要使用 multiprocessing.Manager() 中的 Queue(),而不是 multiprocessing.Queue(),否則會得到一條如下的錯誤信息:

RuntimeError: Queue objects should only be shared between processes through inheritance.

下面的實例演示了進程池中的進程如何通信:

from multiprocessing import Manager, Poolimport osimport timeimport randomdef writer(q): print('writer啟動(%s),父進程為(%s)' % (os.getpid(), os.getppid())) for i in 'xiaoming': q.put(i)def reader(q): print('reader啟動(%s),父進程為(%s)' % (os.getpid(), os.getppid())) for i in range(q.qsize()): print('reader從Queue獲取到消息:%s' % q.get(True))if __name__ == '__main__': print('(%s) start' % os.getpid()) # 使用Manager中的Queue q = Manager().Queue() po = Pool() po.apply_async(writer, (q,)) # 先讓上面的任務向Queue存入數據,然后再讓下面的任務開始從中取數據 time.sleep(1) po.apply_async(reader, (q,)) po.close() po.join() print('(%s) End' % os.getpid())

運行結果:

(17528) startwriter啟動(2216),父進程為(17528)reader啟動(2216),父進程為(17528)reader從Queue獲取到消息:xreader從Queue獲取到消息:ireader從Queue獲取到消息:areader從Queue獲取到消息:oreader從Queue獲取到消息:mreader從Queue獲取到消息:ireader從Queue獲取到消息:nreader從Queue獲取到消息:g(17528) End

以上就是python 進程池pool使用詳解的詳細內容,更多關于python 進程池pool的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 济南宣传册设计-画册设计_济南莫都品牌设计公司 | 酵素生产厂家_酵素OEM_酵素加盟_酵素ODM_酵素原料厂家_厦门益力康 | 百度爱采购运营研究社社群-店铺托管-爱采购代运营-良言多米网络公司 | 日本东丽膜_反渗透膜_RO膜价格_超滤膜_纳滤膜-北京东丽阳光官网 日本细胞免疫疗法_肿瘤免疫治疗_NK细胞疗法 - 免疫密码 | 铝单板_铝窗花_铝单板厂家_氟碳包柱铝单板批发价格-佛山科阳金属 | 气动调节阀,电动调节阀,自力式压力调节阀,切断阀「厂家」-浙江利沃夫自控阀门 | 【同风运车官网】一站式汽车托运服务平台,验车满意再付款 | 粘弹体防腐胶带,聚丙烯防腐胶带-全民塑胶 | 升降炉_真空气氛炉_管式电阻炉厂家-山东中辰电炉有限公司 | 货车视频监控,油管家,货车油管家-淄博世纪锐行电子科技 | Jaeaiot捷易科技-英伟达AI显卡模组/GPU整机服务器供应商 | 药品/药物稳定性试验考察箱-埃里森仪器设备(上海)有限公司 | 膜结构_ETFE膜结构_膜结构厂家_膜结构设计-深圳市烨兴智能空间技术有限公司 | 上海平衡机-单面卧式动平衡机-万向节动平衡机-圈带动平衡机厂家-上海申岢动平衡机制造有限公司 | 碳纤维布-植筋胶-灌缝胶-固特嘉加固材料公司 | 智慧消防-消防物联网系统云平台 智能化的检漏仪_气密性测试仪_流量测试仪_流阻阻力测试仪_呼吸管快速检漏仪_连接器防水测试仪_车载镜头测试仪_奥图自动化科技 | 北京包装设计_标志设计公司_包装设计公司-北京思逸品牌设计 | 上海公司注册-代理记账-招投标审计-上海昆仑扇财税咨询有限公司 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | LINK FASHION 童装·青少年装展 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 | NBA直播_NBA直播免费观看直播在线_NBA直播免费高清无插件在线观看-24直播网 | 三氯异氰尿酸-二氯-三氯-二氯异氰尿酸钠-优氯净-强氯精-消毒片-济南中北_优氯净厂家 | 全自动过滤器_反冲洗过滤器_自清洗过滤器_量子除垢环_量子环除垢_量子除垢 - 安士睿(北京)过滤设备有限公司 | 熔体泵|换网器|熔体齿轮泵|熔体计量泵厂家-郑州巴特熔体泵有限公司 | 防爆型气象站_农业气象站_校园气象站_农业四情监测系统「山东万象环境科技有限公司」 | 全国冰箱|空调|洗衣机|热水器|燃气灶维修服务平台-百修家电 | 耐力板-PC阳光板-PC板-PC耐力板 - 嘉兴赢创实业有限公司 | 长沙发电机-湖南发电机-柴油发电机供应厂家-长沙明邦智能科技 | 运动木地板厂家_体育木地板安装_篮球木地板选购_实木运动地板价格 | 【化妆品备案】进口化妆品备案流程-深圳美尚美化妆品有限公司 | 耙式干燥机_真空耙式干燥机厂家-无锡鹏茂化工装备有限公司 | 气动机械手-搬运机械手-气动助力机械手-山东精瑞自动化设备有限公司 | 磁力反应釜,高压釜,实验室反应釜,高温高压反应釜-威海自控反应釜有限公司 | 微动开关厂家-东莞市德沃电子科技有限公司 | 窖井盖锯圆机_锯圆机金刚石锯片-无锡茂达金刚石有限公司 | 宁夏档案密集柜,智能密集柜,电动手摇密集柜-盛隆柜业宁夏档案密集柜厂家 | 股指期货-期货开户-交易手续费佣金加1分-保证金低-期货公司排名靠前-万利信息开户 | 橡胶接头|可曲挠橡胶接头|橡胶软接头安装使用教程-上海松夏官方网站 | 高压贴片电容|贴片安规电容|三端滤波器|风华电容代理南京南山 | ★济南领跃标识制作公司★济南标识制作,标牌制作,山东标识制作,济南标牌厂 | 对照品_中药对照品_标准品_对照药材_「格利普」高纯中药标准品厂家-成都格利普生物科技有限公司 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 江苏大隆凯科技有限公司|