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 数据加密代码
Dec 24 Python
利用Psyco提升Python运行速度
Dec 24 Python
Python实现提取文章摘要的方法
Apr 21 Python
动感网页相册 python编写简单文件夹内图片浏览工具
Aug 17 Python
使用Python中的tkinter模块作图的方法
Feb 07 Python
Python安装模块的常见问题及解决方法
Feb 05 Python
Python cookbook(数据结构与算法)实现优先级队列的方法示例
Feb 18 Python
python爬虫神器Pyppeteer入门及使用
Jul 13 Python
python使用writerows写csv文件产生多余空行的处理方法
Aug 01 Python
Pytorch的mean和std调查实例
Jan 02 Python
如何使用python传入不确定个数参数
Feb 18 Python
python+selenium 脚本实现每天自动登记的思路详解
Mar 11 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 download.php实现代码 跳转到下载文件(response.redirect)
2009/08/26 PHP
php对图像的各种处理函数代码小结
2013/07/08 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
PHP 断点续传实例详解
2017/11/11 PHP
HTML中事件触发列表与解说
2007/07/09 Javascript
用正则表达式替换图片地址img标签
2013/11/22 Javascript
js实现数组去重、判断数组以及对象中的内容是否相同
2013/11/29 Javascript
js 上下左右键控制焦点(示例代码)
2013/12/14 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
自己动手写的jquery分页控件(非常简单实用)
2015/10/28 Javascript
JavaScript获取各大浏览器信息图示
2015/11/20 Javascript
深入浅析AngularJS和DataModel
2016/02/16 Javascript
jquery插件Jplayer使用方法简析
2016/04/22 Javascript
JavaScript进阶练习及简单实例分析
2016/06/03 Javascript
解决webpack -p压缩打包react报语法错误的方法
2017/07/03 Javascript
JavaScript基于activexobject连接远程数据库SQL Server 2014的方法
2017/07/12 Javascript
AngularJS 仿微信图片手势缩放的实例
2017/09/28 Javascript
浅谈FastClick 填坑及源码解析
2018/03/02 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
2018/09/26 Javascript
浅谈Vue组件单元测试究竟测试什么
2020/02/05 Javascript
Jquery $.map使用方法实例详解
2020/09/01 jQuery
[00:43]拉比克至宝魔导师密钥展示
2018/12/20 DOTA
[01:51]2018年度CS GO最具人气外援-完美盛典
2018/12/16 DOTA
python字符串连接方式汇总
2014/08/21 Python
浅析Python中的多进程与多线程的使用
2015/04/07 Python
Python实现的视频播放器功能完整示例
2018/02/01 Python
Python 循环终止语句的三种方法小结
2019/06/24 Python
Django 设置多环境配置文件载入问题
2020/02/25 Python
Python实现哲学家就餐问题实例代码
2020/11/09 Python
python飞机大战游戏实例讲解
2020/12/04 Python
法国春天百货官网:Printemps.com
2020/06/29 全球购物
学年末自我鉴定
2014/01/21 职场文书
先进事迹报告会感言
2014/01/24 职场文书
卖车协议书
2014/04/21 职场文书
学校督导评估方案
2014/06/10 职场文书
Win11无法安装更新补丁KB3045316怎么办 附KB3045316补丁修复教程
2022/08/14 数码科技