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简单计算文件夹大小的方法
Jul 14 Python
详解Python多线程
Nov 14 Python
python的构建工具setup.py的方法使用示例
Oct 23 Python
Python3爬虫学习入门教程
Dec 11 Python
PyQt QCombobox设置行高的方法
Jun 20 Python
用python3 返回鼠标位置的实现方法(带界面)
Jul 05 Python
python NumPy ndarray二维数组 按照行列求平均实例
Nov 26 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
Apr 22 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
Jun 02 Python
python打包生成so文件的实现
Oct 30 Python
Python Selenium XPath根据文本内容查找元素的方法
Dec 07 Python
Opencv实现二维直方图的计算及绘制
Jul 21 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计算到指定日期还有多少天的方法
2015/04/14 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
PHP实现微信退款功能
2018/10/02 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
Prototype Number对象 学习
2009/07/19 Javascript
javascript-简单的日历实现及Date对象语法介绍(附图)
2013/05/30 Javascript
JavaScript实现16进制颜色值转RGB的方法
2015/02/09 Javascript
javascript Slip.js实现整屏滑动的手机网页
2015/11/25 Javascript
jquery淡入淡出效果简单实例
2016/01/14 Javascript
JavaScript简单获取系统当前时间完整示例
2016/08/02 Javascript
jQuery Masonry瀑布流插件使用方法详解
2017/01/18 Javascript
微信小程序swiper禁止用户手动滑动代码实例
2019/08/23 Javascript
安装多版本Vue-CLI的实现方法
2020/03/24 Javascript
详解element-ui 表单校验 Rules 配置 常用黑科技
2020/07/11 Javascript
Python2和Python3中print的用法示例总结
2017/10/25 Python
Python爬虫包BeautifulSoup简介与安装(一)
2018/06/17 Python
Python绘制正余弦函数图像的方法
2018/08/28 Python
Python玩转PDF的各种骚操作
2019/05/06 Python
程序员的七夕用30行代码让Python化身表白神器
2019/08/07 Python
Python线程条件变量Condition原理解析
2020/01/20 Python
pyspark给dataframe增加新的一列的实现示例
2020/04/24 Python
Python 忽略文件名编码的方法
2020/08/01 Python
three.js模拟实现太阳系行星体系功能
2019/09/03 HTML / CSS
常用UNIX 命令(Linux的常用命令)
2013/07/10 面试题
vue+django实现下载文件的示例
2021/03/24 Vue.js
文员自我评价怎么写
2013/09/19 职场文书
四个太阳教学反思
2014/02/01 职场文书
《花的勇气》教后反思
2014/02/12 职场文书
亲属关系公证书
2014/04/08 职场文书
作文批改评语大全
2014/04/23 职场文书
写给领导的感谢信
2015/01/22 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书
php TP5框架生成二维码链接
2021/04/01 PHP
教你怎么用Python实现GIF动图的提取及合成
2021/06/15 Python
MySQL 5.7常见数据类型
2021/07/15 MySQL
Spring Data JPA框架的核心概念和Repository接口
2022/04/28 Java/Android