我想用 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,您需要将函数放在单独的文件中。