一、说明

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使用进程池多进程时,如何打印错误信息的更多相关文章

  1. 在使用python语言的open函数时,提示错误OSError: [Errno 22] Invalid argument: ‘文件路径’

    如题,在使用python语言的open函数时,提示错误OSError: [Errno 22] Invalid argument: '文件路径',在查阅了大量资料后也得到了一些解决方案,但是这些解决方案 ...

  2. python学习(五)--打印错误信息

    from urllib import request #打印错误信息 except Exceptionlist = [ "http://www.baidu11.com/", &qu ...

  3. AFNetworking 打印错误信息(二进制信息)

    AFNetworking 打印错误信息(二进制信息) NSError *underError = error.userInfo[@"NSUnderlyingError"]; NSD ...

  4. python中进程池和回调函数

    一.数据共享 1.进程间的通信应该尽量避免共享数据的方式 2.进程间的数据是独立的,可以借助队列或管道实现通信,二者都是基于消息传递的. 虽然进程间数据独立,但可以用过Manager实现数据共享,事实 ...

  5. python 36 进程池、线程池

    目录 1. 死锁与递归锁 2. 信号量Semaphor 3. GIL全局解释器锁:(Cpython) 4. IO.计算密集型对比 4.1 计算密集型: 4.2 IO密集型 5. GIL与Lock锁的区 ...

  6. python之进程池与线程池

    一.进程池与线程池介绍 池子使用来限制并发的任务数目,限制我们的计算机在一个自己可承受的范围内去并发地执行任务 当并发的任务数远远超过了计算机的承受能力时,即无法一次性开启过多的进程数或线程数时就应该 ...

  7. python中进程池的应用

    #原创,转载请联系 假设我们写的一个程序需要运行100个子进程的时候,那么写程序时,不可能循环创建销毁100个进程吧?进程的创建与销毁是很耗系统的资源的. 进程池的作用就体现出来了. 进程池可以控制进 ...

  8. Python 37 进程池与线程池 、 协程

    一:进程池与线程池 提交任务的两种方式: 1.同步调用:提交完一个任务之后,就在原地等待,等任务完完整整地运行完毕拿到结果后,再执行下一行代码,会导致任务是串行执行 2.异步调用:提交完一个任务之后, ...

  9. Python中logging在多进程环境下打印日志

    因为涉及到进程间互斥与通信问题,因此默认情况下Python中的logging无法在多进程环境下打印日志.但是查询了官方文档可以发现,推荐了一种利用logging.SocketHandler的方案来实现 ...

随机推荐

  1. 如何下载安装python安装包

    1.从360搜索python,找到“python官网”              python官网地址:https://www.python.org/ 2.进入python官网,出现下面的页面 3.点 ...

  2. java 实体 set数据 报空指针异常

    今天在做一个调用阿里云AXB隐私保护,需要调用通话记录的消费队列,然后set到实体中,然后插入到数据库,但是set的这一步报错 以为工具拿不到值,然后打印发现是有值的, 然后再看一下实例的类型是没错的 ...

  3. lastz

    lastz sequence1.fasta sequence2.fasta 其中,sequence1.fasta是reference genome :sequence2.fasta是需要比对的geno ...

  4. POJ - 2253 Frogger(最短路Dijkstra or flod)

    题意:要从起点的石头跳到终点的石头,设The frog distance为从起点到终点的某一路径中两点间距离的最大值,问在从起点到终点的所有路径中The frog distance的最小值为多少. 分 ...

  5. 数据库连接池C3P0的使用

    一.直接使用代码链接(一般企业开发不会用到.大多数用方法二) 1.导入jar 2.新建JDBCUtil import java.io.FileInputStream; import java.io.I ...

  6. 《新标准C++程序设计》1.1-1.6(C++学习笔记1)

    1.cout输出 cout<<待输出项<<待输出项2<<···; 2.cin输入 cin>>变量1>>变量2>>···; 3.C ...

  7. Floyd--P1119 灾后重建

    题目背景 B地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响.但是在村庄重建好之前,所有与未重建完成的村庄的公路均无法通车.换句话说,只有连接着两个重建完成的村庄的公路才能 ...

  8. 关于torch.flatten的笔记

    先看函数参数: torch.flatten(input, start_dim=0, end_dim=-1) input: 一个 tensor,即要被“推平”的 tensor. start_dim: “ ...

  9. Python 使用print实现进度

    import time print("0%",end='') time.sleep(2) print("\r1%",end='') time.sleep(2) ...

  10. POJ - 1631 Bridging signals(最长上升子序列---LIS)

    题意:左右各n个端口,已知n组线路,要求切除最少的线路,使剩下的线路各不相交,按照左端口递增的顺序输入. 分析: 1.设左端口为l,右端口为r,因为左端口递增输入,l[i] < l[j](i & ...