首页 > 编程语言 > 详细

python使用进程池多进程时,如何打印错误信息

时间:2020-01-06 16:51:24      阅读:265      评论:0      收藏:0      [点我收藏+]

一、说明

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(e)
    traceback.print_tb(e, file=f)  # 将输出信息存入文件
# 输出:
# File "<ipython-input-85-e62dacac329b>", line 6, in <module>
# b = a[5]

python使用进程池多进程时,如何打印错误信息

原文:https://www.cnblogs.com/jaysonteng/p/12156609.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!