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实现文件名批量替换和内容替换
Mar 20 Python
轻松实现python搭建微信公众平台
Feb 16 Python
python 获取网页编码方式实现代码
Mar 11 Python
python微信跳一跳游戏辅助代码解析
Jan 29 Python
Python类装饰器实现方法详解
Dec 21 Python
Python3 单行多行万能正则匹配方法
Jan 07 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
Aug 27 Python
python多进程下的生产者和消费者模型
May 07 Python
Python实现初始化不同的变量类型为空值
Jun 02 Python
Pytorch上下采样函数--interpolate用法
Jul 07 Python
Python连接Impala实现步骤解析
Aug 04 Python
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
Aug 05 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中文件上传的安全问题
2006/10/09 PHP
ThinkPHP使用smarty模板引擎的方法
2014/07/01 PHP
PHP实现对站点内容外部链接的过滤方法
2014/09/10 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
详解关于php的xdebug配置(编辑器vscode)
2019/01/29 PHP
Laravel使用原生sql语句并调用的方法
2019/10/09 PHP
基于jquery的气泡提示效果
2010/05/31 Javascript
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
jquery ajax请求实例深入解析
2012/11/26 Javascript
jquery删除ID为sNews的tr元素的内容
2014/04/10 Javascript
对 jQuery 中 data 方法的误解分析
2014/06/18 Javascript
window.print打印指定div指定网页指定区域的方法
2014/08/04 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
js实现点击向下展开的下拉菜单效果代码
2015/09/01 Javascript
layer弹窗插件操作方法详解
2017/05/19 Javascript
彻底解决 webpack 打包文件体积过大问题
2017/07/07 Javascript
原生JS检测CSS3动画是否结束的方法详解
2019/01/27 Javascript
微信小程序wx.request拦截器使用详解
2019/07/09 Javascript
[02:02]2018DOTA2亚洲邀请赛Mineski赛前采访
2018/04/04 DOTA
python自动化测试之连接几组测试包实例
2014/09/28 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
tensorflow实现对图片的读取的示例代码
2018/02/12 Python
Python OpenCV处理图像之滤镜和图像运算
2018/07/10 Python
Python的条件表达式和lambda表达式实例
2019/01/31 Python
Python中的几种矩阵乘法(小结)
2019/07/10 Python
Django缓存系统实现过程解析
2019/08/02 Python
一篇文章弄懂Python中的可迭代对象、迭代器和生成器
2019/08/12 Python
Python 线程池用法简单示例
2019/10/02 Python
python 第三方库paramiko的常用方式
2021/02/20 Python
八一建军节活动方案
2014/02/10 职场文书
2014年元旦联欢会活动策划方案
2014/02/16 职场文书
股东合作协议书范本
2014/04/14 职场文书
促销活动总结
2014/04/28 职场文书
施工安全生产承诺书
2014/05/23 职场文书
银行员工犯错检讨书
2014/09/16 职场文书
《家世》读后感:看家训的力量
2019/12/30 职场文书