我想用多进程在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中的解决方案非常针对该线程中的问题,因此无法在此处真正应用。
有人知道如何解决此问题吗?
答案 0 :(得分:0)
在@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,您需要将该功能放在单独的文件中。