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下singleton模式的实现方法
Jul 16 Python
Python实现微信公众平台自定义菜单实例
Mar 20 Python
基python实现多线程网页爬虫
Sep 06 Python
使用Python编写简单的端口扫描器的实例分享
Dec 18 Python
Python 中包/模块的 `import` 操作代码
Apr 22 Python
关于Python 的简单栅格图像边界提取方法
Jul 05 Python
Pycharm新建模板默认添加个人信息的实例
Jul 15 Python
详解mac python+selenium+Chrome 简单案例
Nov 08 Python
numpy.transpose()实现数组的转置例子
Dec 02 Python
Django操作session 的方法
Mar 09 Python
python 安装impala包步骤
Mar 28 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
May 20 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
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
2013/12/25 PHP
php安装ssh2扩展的方法【Linux平台】
2016/07/20 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
PHP Mysqli 常用代码集合
2016/11/12 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
2009/07/19 Javascript
javascript判断用户浏览器插件安装情况的代码
2011/01/01 Javascript
javascript中onmouse事件在div中失效问题的解决方法
2012/01/09 Javascript
js判断变量是否未定义的代码
2020/03/28 Javascript
JavaScript实现存储HTML字符串示例
2014/04/21 Javascript
Nodejs学习笔记之Stream模块
2015/01/13 NodeJs
jQuery提示插件alertify使用指南
2015/04/21 Javascript
JS 事件绑定、事件监听、事件委托详细介绍
2016/09/28 Javascript
微信小程序 获取相册照片实例详解
2016/11/16 Javascript
js通过指定下标或指定元素进行删除数组的实例
2017/01/12 Javascript
js实现倒计时关键代码
2017/05/05 Javascript
vue 组件中添加样式不生效的解决方法
2018/07/06 Javascript
小程序实现左右来回滚动字幕效果
2018/12/28 Javascript
vue 项目build错误异常的解决方法
2019/04/22 Javascript
详解python上传文件和字符到PHP服务器
2017/11/24 Python
在unittest中使用 logging 模块记录测试数据的方法
2018/11/30 Python
Python实现二维曲线拟合的方法
2018/12/29 Python
Python3实现定时任务的四种方式
2019/06/03 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
Python使用Pygame绘制时钟
2020/11/29 Python
python爬虫中url管理器去重操作实例
2020/11/30 Python
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
全球领先的鞋类零售商:The Walking Company
2016/07/21 全球购物
馥蕾诗美国官网:Fresh美国
2019/10/09 全球购物
Servlet方面面试题
2016/09/28 面试题
培训主管岗位职责
2014/02/01 职场文书
学生社团文化节开幕式主持词
2014/03/28 职场文书
班组建设经验交流材料
2014/05/12 职场文书
运动会闭幕词
2015/01/28 职场文书
2015年高校教师个人工作总结
2015/05/25 职场文书
Python如何用re模块实现简易tokenizer
2022/05/02 Python