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生成随机验证码(中文验证码)示例
Apr 03 Python
django admin添加数据自动记录user到表中的实现方法
Jan 05 Python
解决Django的request.POST获取不到内容的问题
May 28 Python
对Python的zip函数妙用,旋转矩阵详解
Dec 13 Python
Python数据分析:手把手教你用Pandas生成可视化图表的教程
Dec 15 Python
pyqt5使用按钮进行界面的跳转方法
Jun 19 Python
python-tornado的接口用swagger进行包装的实例
Aug 29 Python
python由已知数组快速生成新数组的方法
Apr 08 Python
浅谈优化Django ORM中的性能问题
Jul 09 Python
Python reques接口测试框架实现代码
Jul 28 Python
python 监控logcat关键字功能
Sep 04 Python
python 安全地删除列表元素的方法
Mar 16 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错误提示的关闭方法详解
2013/06/23 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
执行iframe中的javascript方法
2008/10/07 Javascript
非常有用的40款jQuery 插件推荐(系列二)
2011/12/25 Javascript
解析JavaScript中delete操作符不能删除的对象
2013/12/03 Javascript
JS获取html对象的几种方式介绍
2013/12/05 Javascript
jQuery事件之键盘事件(ctrl+Enter回车键提交表单等)
2014/05/11 Javascript
iframe调用父页面函数示例详解
2014/07/17 Javascript
JavaScript函数定义的常见注意事项小结
2014/09/16 Javascript
IE中document.createElement的iframe无法设置属性name的解决方法
2015/09/14 Javascript
javascript类型系统——日期Date对象全面了解
2016/07/13 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
2017/03/23 Javascript
AngularJs实现聊天列表实时刷新功能
2017/06/15 Javascript
获取本机IP地址的实例(JavaScript / Node.js)
2017/11/24 Javascript
移动前端图片压缩上传的实例
2017/12/06 Javascript
js断点调试经验分享
2017/12/08 Javascript
vue.js实现格式化时间并每秒更新显示功能示例
2018/07/07 Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
2018/09/19 Javascript
基于vue-cli 路由 实现类似tab切换效果(vue 2.0)
2019/05/08 Javascript
微信小程序中悬浮窗功能的实现代码
2019/08/02 Javascript
浅谈JS中几种轻松处理'this'指向方式
2019/09/16 Javascript
js prototype深入理解及应用实例分析
2019/11/25 Javascript
解决Vue的文本编辑器 vue-quill-editor 小图标样式排布错乱问题
2020/08/03 Javascript
python中使用urllib2获取http请求状态码的代码例子
2014/07/07 Python
详解Django中间件执行顺序
2018/07/16 Python
python 接收处理外带的参数方法
2018/12/03 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
keras实现VGG16 CIFAR10数据集方式
2020/07/07 Python
python读取excel数据并且画图的实现示例
2021/02/08 Python
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
股指期货心得体会
2014/09/10 职场文书
党员自我评议个人对照检查材料
2014/09/16 职场文书
妈妈别哭观后感
2015/06/08 职场文书
小学毕业感言100字
2015/07/30 职场文书
Windows下redis下载、redis安装及使用教程
2021/06/02 Redis