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 相关文章推荐
Python3实现的腾讯微博自动发帖小工具
Nov 11 Python
Python数据分析之真实IP请求Pandas详解
Nov 18 Python
python使用opencv读取图片的实例
Aug 17 Python
情人节快乐! python绘制漂亮玫瑰
Aug 18 Python
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
May 13 Python
python opencv 批量改变图片的尺寸大小的方法
Jun 28 Python
Python使用import导入本地脚本及导入模块的技巧总结
Aug 07 Python
Pytorch修改ResNet模型全连接层进行直接训练实例
Sep 10 Python
django框架ModelForm组件用法详解
Dec 11 Python
详解python with 上下文管理器
Sep 02 Python
Pycharm自带Git实现版本管理的方法步骤
Sep 18 Python
python使用pywinauto驱动微信客户端实现公众号爬虫
May 19 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 Static关键字实用方法
2010/06/04 PHP
不常用但很实用的PHP预定义变量分析
2019/06/25 PHP
学习jquery之一
2007/04/27 Javascript
Javascript模块模式分析
2008/05/16 Javascript
面向对象的Javascript之二(接口实现介绍)
2012/01/27 Javascript
js模仿jquery的写法示例代码
2013/06/16 Javascript
js文件Cookie存取值示例代码
2014/02/20 Javascript
纯JS实现根据CSS的class选择DOM
2014/03/22 Javascript
在Linux上用forever实现Node.js项目自启动
2014/07/09 Javascript
Javascript非构造函数的继承
2015/04/27 Javascript
jQuery实现信息提示框(带有圆角框与动画)效果
2015/08/07 Javascript
小心!AngularJS结合RequireJS做文件合并压缩的那些坑
2016/01/09 Javascript
使用jQuery制作基础的Web图片轮播效果
2016/04/22 Javascript
基于chosen插件实现人员选择树搜索自动筛选功能
2016/09/24 Javascript
微信小程序 两种滑动方式(横向滑动,竖向滑动)详细及实例代码
2017/01/13 Javascript
Vue.js实现模拟微信朋友圈开发demo
2017/04/20 Javascript
ES6入门教程之let和const命令详解
2017/05/17 Javascript
原生js实现简单的链式操作
2017/07/04 Javascript
20170918 前端开发周报之JS前端开发必看
2017/09/18 Javascript
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
浅谈vux之x-input使用以及源码解读
2018/11/04 Javascript
小程序简单两栏瀑布流效果的实现
2019/12/18 Javascript
[06:10]6.81新信使新套装!给你一个炫酷的DOTA2
2014/05/06 DOTA
python中将阿拉伯数字转换成中文的实现代码
2011/05/19 Python
用Python中的字典来处理索引统计的方法
2015/05/05 Python
python批量赋值操作实例
2018/10/22 Python
Python设计模式之适配器模式原理与用法详解
2019/01/15 Python
由面试题加深对Django的认识理解
2019/07/19 Python
修复iPhone的safari浏览器上submit按钮圆角bug
2012/12/24 HTML / CSS
惠而浦美国官网:Whirlpool.com
2021/01/19 全球购物
PHP如何防止SQL注入
2014/05/03 面试题
医学护理系毕业生求职信
2013/10/01 职场文书
饮料业务员岗位职责
2013/12/15 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
Python list去重且保持原顺序不变的方法
2021/04/03 Python
Python实现生活常识解答机器人
2021/06/28 Python