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之编写类之一创建实例
Oct 11 Python
为Python的web框架编写MVC配置来使其运行的教程
Apr 30 Python
python编写Logistic逻辑回归
Dec 30 Python
django foreignkey(外键)的实现
Jul 29 Python
python gdal安装与简单使用
Aug 01 Python
selenium+PhantomJS爬取豆瓣读书
Aug 26 Python
python数据持久存储 pickle模块的基本使用方法解析
Aug 30 Python
Django之模板层的实现代码
Sep 09 Python
Python如何存储数据到json文件
Mar 09 Python
Python decorator拦截器代码实例解析
Apr 04 Python
零基础小白多久能学会python
Jun 22 Python
常用的Python代码调试工具总结
Jun 23 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封装的验证码工具类完整实例
2016/10/19 PHP
禁止刷新,回退的JS
2006/11/25 Javascript
script标签属性type与language使用选择
2012/12/02 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
2014/01/07 Javascript
IE 下Enter提交表单存在重复提交问题的解决方法
2014/05/04 Javascript
jQuery图片轮播滚动切换代码分享
2020/04/20 Javascript
jQuery EasyUI Dialog拖不下来如何解决
2015/09/28 Javascript
AngularJS使用angular-formly进行表单验证
2015/12/27 Javascript
js css3实现图片拖拽效果
2017/03/04 Javascript
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
2017/03/21 jQuery
详解ES6语法之可迭代协议和迭代器协议
2018/01/13 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
2018/05/14 Javascript
解决vue-cli webpack打包后加载资源的路径问题
2018/09/25 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
2019/11/11 jQuery
Javascript中Math.max和Math.max.apply的区别和用法详解
2020/08/24 Javascript
[04:52]2015国际邀请赛LGD战队晋级之路
2015/08/14 DOTA
Python3中的2to3转换工具使用示例
2015/06/12 Python
Python函数中*args和**kwargs来传递变长参数的用法
2016/01/26 Python
python学习入门细节知识点
2018/03/29 Python
详解opencv中画圆circle函数和椭圆ellipse函数
2019/12/27 Python
PyCharm永久激活方式(推荐)
2020/09/22 Python
Windows下Anaconda和PyCharm的安装与使用详解
2020/04/23 Python
html5是什么_动力节点Java学院整理
2017/07/07 HTML / CSS
使用canvas来完成线性渐变和径向渐变的功能的方法示例
2019/07/25 HTML / CSS
捷克家居装饰及图书音像购物网站:Velký košík
2018/04/16 全球购物
奥地利票务门户网站:oeticket.com
2019/12/31 全球购物
迪士尼西班牙官方网上商店:ShopDisney西班牙
2020/02/02 全球购物
自我评价正确写法范文
2013/12/10 职场文书
就业协议书的作用
2014/04/11 职场文书
采购部长岗位职责
2014/06/13 职场文书
酒店餐厅2014重阳节活动策划方案
2014/09/16 职场文书
公司租房协议书
2014/10/14 职场文书
关于调整工作时间的通知
2015/04/24 职场文书
2015年小学二年级班主任工作总结
2015/05/21 职场文书
大学生暑假实习总结
2015/07/13 职场文书
国庆放假通知怎么写
2015/07/30 职场文书