python3中异常处理_python3多处理中的异常捕获

我的用例是捕捉python多处理进程中发生的所有异常。所以在一些网络搜索的帮助下,我想出了以下代码:import multiprocessing as mp

class Process(mp.Process):

def __init__(self, *args, **kwargs):

mp.Process.__init__(self, *args, **kwargs)

self._pconn, self._cconn = mp.Pipe()

self._exception = None

def run(self):

try:

mp.Process.run(self)

self._cconn.send(None)

except Exception as e:

tb = traceback.format_exc()

self._cconn.send((e, tb))

@property

def exception(self):

if self._pconn.poll():

self._exception = self._pconn.recv()

return self._exception

然后在我的主代码中,我捕捉到以下错误:

^{pr2}$

这对轻活儿来说效果很好(比如10分钟内完成1000次)。但是当任务繁重(1000个工作在3小时内完成)时,后续的运行就很慢了。我发现有两件事我正在寻求解决办法:

1)当代码运行时,会创建许多进程(当我在命令行上选中top时),大多数进程什么都不做,也不会减慢运行时的速度。这是我忽视的问题吗?在

2)当我运行一个重任务时,所有后续的重任务都会被延迟。这似乎是因为有一些剩余的进程从旧的繁重的工作中遗留下来,并继续与新的运行分担负载。在

代码是否提供了任何提示,为什么我的运行不是傻瓜证明和显示可变的运行时间?在

请随时询问具体细节,我将提供他们,我不确定可能需要什么,所以我开始一个普遍的查询。在

编辑1:

下面是我如何创建流程jobs = []

for i in range(num_processes):

p = Process(target=func, args=(inqueue, outqueue))

jobs.append(p)

p.start()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值