進程池的實現,Python進程池的坑

 2023-11-12 阅读 30 评论 0

摘要:最近在研究如何提升python程序性能的問題(本身是個偽命題),使用了多線程,速度比之前還慢,后續又采用進程池,但是進程池遇到的坑,我只能說python很傻逼! 進程池的實現、1、python 自帶的 multiprocessing , 涉

最近在研究如何提升python程序性能的問題(本身是個偽命題),使用了多線程,速度比之前還慢,后續又采用進程池,但是進程池遇到的坑,我只能說python很傻逼!

進程池的實現、1、python 自帶的 multiprocessing , 涉及序列化問題,要升級到pathos的multiple包

pip install dill
pip install pathos

2、多進程還涉及日志打印問題

python 進程、要采用多進程打日志組件

pip install concurrent-log-handler

3、最最重要的 就是在子進程中導入進程需要依賴的包

進程池和線程池?

4、檢測子進程是否結束 也需要自定義方法,如下:

 def check_multi_process_done(self, res):is_done = Falseloop_count = 0done_count = 0while (not is_done):loop_count += 1is_done = Trueundone_count = 0for job in res:try:is_ready = job.ready()if not is_ready:is_done = Falseundone_count += 1continueis_ready = job.successful()if not is_ready:is_done = Falseundone_count += 1continues = job.get()  # get()獲取返回值done_count += 1res.remove(job)code_log.info(F"進程結束,結果為:{s}")except Exception as e:logging.getLogger("error").error(f"{traceback.format_exc()}")if not is_done:if loop_count > 10 and undone_count / done_count < 0.2:code_log.info(f"進程未結束,但是已經輪詢了{loop_count} 完成任務數 {done_count} 未完成數 {undone_count},不再監測,完成任務")breakcode_log.info(f"進程未結束loop_count= {loop_count} 完成任務數 {done_count} 未完成數 {undone_count},sleep 5s 繼續監測")sleep(120)

進程池的特點,5、通過?

pool.terminate(); 

來關閉進程池

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/173671.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息