Python基于进程池实现多进程过程解析


Posted in Python onApril 30, 2020

1、注意:pool必须在 if __name__ == '__main__' 下面运行,不然会报错

2、多进程内出现错误会直接跳过该进程,并且默认不会打印错误信息

3、if__name__下面的数据需要通过参数传入主函数里面,不然主函数获取不到该数据值而报错。

4、若不通过传参形式传入数据,可以定义全局变量。但是全局变量的值不能在多进程里面进行修改。

代码如下

from multiprocessing import Pool # 进程池,用于多进程
import os # 用于获取当前执行的文件名
import time
import traceback # 用于捕获异常
import sys # 用于捕获异常


def main_func(i): # 多进程运行的函数
  try: # 多进程中发生异常是不会打印错误信息,并且当前进程会直接跳过,所以异常需要自行捕获
    rand_time = random.randint(1, 3) # 随机产生1~3的整数
    time.sleep(rand_time )
    print(i)
  except:
    current_filename = str(os.path.basename(sys.argv[0]))[:-3] # 获取当前文件名称
    cur_err_filname = current_filename + '_error.txt'
    error_info = sys.exc_info() # 打印异常
    with open(f'{cur_err_filname }', 'a') as f:
      error_str = f'{i}:ERROR OCCURRED,{time.strftime("%Y-%m-%d %H:%M:%S")}:\n {error_info[0]}: {error_info[1]}' # 记录当前进程特征值,错误发生时间 ,错误类型,错误概述
      print(error_str, file=f) # 通过打印方式写入文件
      traceback.print_tb(error_info[2], file=f) # 错误细节描述(包括bug的代码位置)
      f.write(f"{'=' * 50}\n") # 分行


if __name__ == '__main__': # 必须在此语句下面运行,不然会报错
  pool = Pool(5) # 定义进程数量
  for i in range(20):
    pool.apply_async(main_func, (i, )) # 调用函数执行多进程
  pool.close() # 关闭进程池
  pool.join() # 阻塞进程,此两部不能少,保证多进程正常运行

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python中使用poplib模块收取邮件的教程
Apr 29 Python
Python实现简单的四则运算计算器
Nov 02 Python
django利用request id便于定位及给日志加上request_id
Aug 26 Python
python实现将汉字保存成文本的方法
Nov 16 Python
python图像处理入门(一)
Apr 04 Python
django-allauth入门学习和使用详解
Jul 03 Python
django ModelForm修改显示缩略图 imagefield类型的实例
Jul 28 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
Dec 19 Python
PyTorch实现更新部分网络,其他不更新
Dec 31 Python
Python的PIL库中getpixel方法的使用
Apr 09 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
Jul 20 Python
Python 实现Mac 屏幕截图详解
Oct 05 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
Apr 30 #Python
解决Python发送Http请求时,中文乱码的问题
Apr 30 #Python
Pytorch高阶OP操作where,gather原理
Apr 30 #Python
python利用Excel读取和存储测试数据完成接口自动化教程
Apr 30 #Python
Python闭包与装饰器原理及实例解析
Apr 30 #Python
python+requests接口压力测试500次,查看响应时间的实例
Apr 30 #Python
Pycharm连接远程服务器过程图解
Apr 30 #Python
You might like
PHP 选项及相关信息函数库
2006/12/04 PHP
PHP中ADODB类详解
2008/03/25 PHP
php下防止单引号,双引号在接受页面转义的设置方法
2008/09/25 PHP
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
2009/09/30 PHP
c#中的实现php中的preg_replace
2009/12/21 PHP
PHP之图片上传类实例代码(加了缩略图)
2016/06/30 PHP
Yii2实现中国省市区三级联动实例
2017/02/08 PHP
ExtJS 2.2.1的grid控件在ie6中的显示问题
2009/05/04 Javascript
Javascript改变CSS样式(局部和全局)
2013/12/18 Javascript
jQuery插件Elastislide实现响应式的焦点图无缝滚动切换特效
2015/04/12 Javascript
JavaScript实现将xml转换成html table表格的方法
2015/04/17 Javascript
jQuery实现伸展与合拢panel的方法
2015/04/30 Javascript
基于AngularJS+HTML+Groovy实现登录功能
2016/02/17 Javascript
实例讲解jQuery EasyUI tree中state属性慎用
2016/04/01 Javascript
jQuery访问浏览器本地存储cookie、localStorage和sessionStorage的基本用法
2017/10/20 jQuery
详解如何将 Vue-cli 改造成支持多页面的 history 模式
2017/11/20 Javascript
微信小程序canvas开发水果老虎机的思路详解
2020/02/07 Javascript
python中利用Future对象异步返回结果示例代码
2017/09/07 Python
利用TensorFlow训练简单的二分类神经网络模型的方法
2018/03/05 Python
Python批量生成幻影坦克图片实例代码
2019/06/04 Python
python替换字符串中的子串图文步骤
2019/06/19 Python
python使用opencv对图像mask处理的方法
2019/07/05 Python
简单了解Django ContentType内置组件
2019/07/23 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
2020/06/02 Python
快速创建python 虚拟环境
2020/11/28 Python
Giuseppe Zanotti美国官方网站:将鞋履视为高级时装般精心制作
2018/02/06 全球购物
护士的自我鉴定
2014/02/07 职场文书
班级口号大全
2014/06/09 职场文书
个人批评与自我批评材料
2014/10/17 职场文书
2015年小学开学寄语
2015/02/27 职场文书
大学生实习推荐信
2015/03/27 职场文书
追悼词范文大全
2015/06/23 职场文书
员工规章制度范本
2015/08/07 职场文书
一篇文章弄懂Python中的内建函数
2021/08/07 Python
Win11电源已接通但未充电怎么办?Win11电源已接通未充电的解决方法
2022/04/05 数码科技
golang连接MySQl使用sqlx库
2022/04/14 Golang