python使用进程池多进程时,如何打印错误信息
一、说明
1、python进程池进行多进程运行时,如果有错误,该进程会直接跳过,并且不会打印错误信息。
2、如果需要了解到进程内的错误信息,此时就需要通过捕获异常来输出错误信息了。
二、具体方法如下:
法一:
注:此方法不会打印错误代码具体位置
a = [1, 2, 3]
try:
b = a[5]
except Exception as ee:
print(ee)
s = ee # 如果想在except语句外使用ee,需要用变量储存
# 输出ee:
# list index out of range # s: IndexError('list index out of range') ,s本身是包含错误类型的,所以,如果需要将错误信息写入文件的话,需要通过str(s)将信息转换为字符串(或者使用pickle.dumps(s),但不能使用json.dumps,会报错)
print(type(s))
# 输出:
# IndexError print(s)
# 输出:
# list index out of range
法二:
注:此方法可以输出错误代码位置
import sys
import traceback a = [1, 2, 3]
try:
b = a[5]
except:
error_type, error_value, error_trace = sys.exc_info() # 输出的值是元组,分别是:错误类型,错误内容,traceback对象 print(error_type) # 与法一中的type(s)一样
# 输出:
# IndexError print(error_value) # 与法一中的s一样,IndexError('list index out of range')
# 输出:
# IndexError('list index out of range') # 对于error_trace对象,需要通过trackback模块来提取具体内容
# 法1(此方法只显示错误代码的行数):
for info in traceback.extract_tb(error_trace):
print(info)
# 输出:
# <FrameSummary file <ipython-input-85-e62dacac329b>, line 6 in <module>> # 法2(此方法会显示错误代码的内容):
with open('error.txt', 'a') as f:
traceback.print_tb(error_trace)
traceback.print_tb(error_trace, file=f) # 将输出信息存入文件
# 输出:
# File "<ipython-input-85-e62dacac329b>", line 6, in <module>
# b = a[5]
python使用进程池多进程时,如何打印错误信息的更多相关文章
- 在使用python语言的open函数时,提示错误OSError: [Errno 22] Invalid argument: ‘文件路径’
如题,在使用python语言的open函数时,提示错误OSError: [Errno 22] Invalid argument: '文件路径',在查阅了大量资料后也得到了一些解决方案,但是这些解决方案 ...
- python学习(五)--打印错误信息
from urllib import request #打印错误信息 except Exceptionlist = [ "http://www.baidu11.com/", &qu ...
- AFNetworking 打印错误信息(二进制信息)
AFNetworking 打印错误信息(二进制信息) NSError *underError = error.userInfo[@"NSUnderlyingError"]; NSD ...
- python中进程池和回调函数
一.数据共享 1.进程间的通信应该尽量避免共享数据的方式 2.进程间的数据是独立的,可以借助队列或管道实现通信,二者都是基于消息传递的. 虽然进程间数据独立,但可以用过Manager实现数据共享,事实 ...
- python 36 进程池、线程池
目录 1. 死锁与递归锁 2. 信号量Semaphor 3. GIL全局解释器锁:(Cpython) 4. IO.计算密集型对比 4.1 计算密集型: 4.2 IO密集型 5. GIL与Lock锁的区 ...
- python之进程池与线程池
一.进程池与线程池介绍 池子使用来限制并发的任务数目,限制我们的计算机在一个自己可承受的范围内去并发地执行任务 当并发的任务数远远超过了计算机的承受能力时,即无法一次性开启过多的进程数或线程数时就应该 ...
- python中进程池的应用
#原创,转载请联系 假设我们写的一个程序需要运行100个子进程的时候,那么写程序时,不可能循环创建销毁100个进程吧?进程的创建与销毁是很耗系统的资源的. 进程池的作用就体现出来了. 进程池可以控制进 ...
- Python 37 进程池与线程池 、 协程
一:进程池与线程池 提交任务的两种方式: 1.同步调用:提交完一个任务之后,就在原地等待,等任务完完整整地运行完毕拿到结果后,再执行下一行代码,会导致任务是串行执行 2.异步调用:提交完一个任务之后, ...
- Python中logging在多进程环境下打印日志
因为涉及到进程间互斥与通信问题,因此默认情况下Python中的logging无法在多进程环境下打印日志.但是查询了官方文档可以发现,推荐了一种利用logging.SocketHandler的方案来实现 ...
随机推荐
- HDU_4939 stupid tower defense 2014多校7 多变量型DP
意思是有个塔防游戏,有三种塔,红塔在怪物经过的时候每秒会产生攻击力大小的伤害,绿塔对怪物经过以及经过之后每秒产生攻击力大小的伤害,还有种蓝塔,对怪物进行减速,即怪物从此之后经过一个单位都会减慢c秒 最 ...
- 吴裕雄--天生自然C++语言学习笔记:C++ 预处理器
预处理器是一些指令,指示编译器在实际编译之前所需完成的预处理. 所有的预处理器指令都是以井号(#)开头,只有空格字符可以出现在预处理指令之前.预处理指令不是 C++ 语句,所以它们不会以分号(;)结尾 ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-italic
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- Node.js 介绍
章节 Node.js 介绍 Node.js 入门 Node.js 模块 Node.js HTTP模块 Node.js 文件系统模块 Node.js URL模块 Node.js NPM Node.js ...
- 日期月份是英文转成数字——oracle
update table01 set F_DATE = to_char(to_date(F_DATE, 'dd-month-yy', 'NLS_DATE_LANGUAGE=AMERICAN'), 'y ...
- SpringMVC中 controller方法返回值
1)ModelAndView @RequestMapping(value="/itemEdit") public ModelAndView itemEdit(){ //创建模型视图 ...
- es6的...
es6的... (1):函数rest参数和扩展 sum1(...sum){//传多个参数 let total=0; for( ...
- 每天一点点之laravel框架 - Laravel5.6 + Passport实现Api接口认证
1.首先通过 Composer 包管理器安装 Passport: composer require laravel/passport 注:如果安装过程中提示需要更高版本的 Laravel:larave ...
- Python属性和内建属性
属性property 1. 私有属性添加getter和setter方法 class Money(object): def __init__(self): self.__money = 0 def ge ...
- POJ 1502:MPI Maelstrom Dijkstra模板题
MPI Maelstrom Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6499 Accepted: 4036 Des ...