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发送邮件示例(支持中文邮件标题)
Feb 16 Python
VSCode下配置python调试运行环境的方法
Apr 06 Python
python pycurl验证basic和digest认证的方法
May 02 Python
matplotlib调整子图间距,调整整体空白的方法
Aug 03 Python
使用python3实现操作串口详解
Jan 01 Python
安装docker-compose的两种最简方法
Jul 30 Python
python爬虫-模拟微博登录功能
Sep 12 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
Jan 10 Python
Python 实现递归法解决迷宫问题的示例代码
Jan 12 Python
详解python metaclass(元类)
Aug 13 Python
Python生成并下载文件后端代码实例
Aug 31 Python
Docker如何部署Python项目的实现详解
Oct 26 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
linux下删除7天前日志的代码(php+shell)
2011/01/02 PHP
php查看网页源代码的方法
2015/03/13 PHP
php将html转成wml的WAP标记语言实例
2015/07/08 PHP
PHP实现C#山寨ArrayList的方法
2015/07/16 PHP
php实现文件预览功能
2017/05/23 PHP
PHP多个图片压缩成ZIP的方法
2020/08/18 PHP
Laravel登录失败次数限制的实现方法
2020/08/26 PHP
CSS+JS构建的图片查看器
2006/07/22 Javascript
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
mailto的使用技巧分享
2012/12/21 Javascript
ECMAScript5中的对象存取器属性:getter和setter介绍
2014/12/08 Javascript
jQuery实现的点赞随机数字显示动画效果(附在线演示与demo源码下载)
2015/12/31 Javascript
java中String类型变量的赋值问题介绍
2016/03/23 Javascript
js实现图片缓慢放大缩小效果
2016/08/02 Javascript
AngularJS表单和输入验证实例
2016/11/02 Javascript
Bootstrap CSS组件之按钮下拉菜单
2016/12/17 Javascript
纯js实现倒计时功能
2017/01/06 Javascript
JavaScript 动态三角函数实例详解
2017/01/08 Javascript
Vue环境搭建+VSCode+Win10的详细教程
2020/08/19 Javascript
[29:23]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场1
2014/05/23 DOTA
简单实现python爬虫功能
2015/12/31 Python
解决Django的request.POST获取不到内容的问题
2018/05/28 Python
python中scikit-learn机器代码实例
2018/08/05 Python
对django xadmin自定义菜单的实例详解
2019/01/03 Python
Python利用Xpath选择器爬取京东网商品信息
2020/06/01 Python
Python基于execjs运行js过程解析
2020/11/27 Python
详解html5 canvas常用api总结(二)--绘图API
2016/12/14 HTML / CSS
canvas实现滑动验证的实现示例
2020/08/11 HTML / CSS
澳大利亚家庭花园和DIY工具网店:VidaXL
2019/05/03 全球购物
房地产活动策划方案
2014/05/14 职场文书
第二批党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2014年党的群众路线学习心得体会
2014/11/05 职场文书
武当山导游词
2015/02/03 职场文书
观看《筑梦中国》纪录片心得体会
2016/01/18 职场文书
python requests模块的使用示例
2021/04/07 Python
深度学习tensorflow基础mnist
2021/04/14 Python