使用嵌套函数处理 Python 多处理中的子错误



我想用 Python 3.6 编写一个具有多处理功能的函数,其中工人执行一个函数

def f(x):
.
.

这样,每次在子进程中引发错误时,该子进程都应重新启动。

这是我的代码:

for worker in workers:
def nested(worker):
try:
`proc=multiprocessing.Process(target=f,
args=(args[worker],))
proc.start()
except:
nested(worker)
nested(worker)

问题是此结构不会捕获子进程中的错误,因此它无法按预期工作。 不幸的是,Python Multiprocessing: Handling Child Errors in Parent 中的解决方案非常特定于该线程中的问题,不能真正应用于此处。

有人知道如何解决这个问题吗?

在@zwer的帮助下,我得到了这个工作:

def nested(args):
try:
f(args)
except:
nested(args)
for worker in workers:
proc=multiprocessing.Process(target=nested,
args=args[worker])
proc.start()

请注意,此结构仅适用于Unix系统,对于Windows,您需要将函数放在单独的文件中。

相关内容

  • 没有找到相关文章