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的方案来实现 ...
随机推荐
- Elasticsearch 删除文档
章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...
- spring源码 继承AttributeAccessor的BeanDefinition接口
/** * A BeanDefinition describes a bean instance, which has property values, * constructor argument ...
- 基于Ambari的WebUI部署HBase服务
基于Ambari的WebUI部署HBase服务 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.部署Ambari服务 博主推荐阅读: https://www.cnblogs.co ...
- bat 卸载程序的脚本
@echo off :: BatchGotAdmin :------------------------------------- REM --> Check for permissions & ...
- YAML的基本使用
YAML 在Python中的应用 https://www.cnblogs.com/shaosks/p/7344771.html
- 不得了的try catch
try catch:几乎所有语言都有这个语句 try { //可能会导致错误的代码 } catch (error) { //在错误发生时怎么处理 }finally { //即使报错始终执行 } 1. ...
- ng-repeat动态生成的DOM如何获取宽度(封装好的方法)
define(['custom/bootstrapApp'],function(app){ app.filter('getTabWidth',function(){ return function(a ...
- java课程之团队开发冲刺阶段2.9
总结昨天进度: 已经完成查询课程信息任务 遇到的困难: 已经全部解决 今天的任务: 修改APP图标 当日总结: manifest中管理着APP的基本信息资料,所以是在manifest文件中修改APP的 ...
- 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring DI(依赖注入)的实现方式属性注入和构造注入
依赖注入(Dependency Injection,DI)和控制反转含义相同,它们是从两个角度描述的同一个概念. 当某个 Java 实例需要另一个 Java 实例时,传统的方法是由调用者创建被调用者的 ...
- Python __name__="__main__"的作用
该语句加在模块的最后,可以让这个模块,即可以被别人import,又可以直接运行. fibo.py文件: def fibo(): pass # fibo函数的内容 if __name__==" ...