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

时间:2018-10-19 08:02:36

标签: python multiprocessing

我想用多进程在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中的解决方案非常针对该线程中的问题,因此无法在此处真正应用。

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

1 个答案:

答案 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,您需要将该功能放在单独的文件中。