Python multiprocessing.Pool与崩溃的进程

Python multiprocessing.Pool与崩溃的进程,python,multiprocessing,Python,Multiprocessing,嗯,他们不应该撞车,但他们无论如何都会撞车。有没有一种方法可以让multiprocessing.Pool或任何其他多处理工具重新启动一个死亡的进程?否则我怎么做 谢谢 编辑:一些背景。该过程在Autodesk Maya中对几何体执行多项操作。它做得很好。问题是,每隔一段时间,我就会有一个文件,它决定一旦完成并打开一个新场景,就完全退出Maya(或mayapy),而不会出现python警告或错误,也不会出现来自Windows的严重进程错误。它只是死了。不幸的是,我对撞车事件无能为力 我所希望的是一

嗯,他们不应该撞车,但他们无论如何都会撞车。有没有一种方法可以让multiprocessing.Pool或任何其他多处理工具重新启动一个死亡的进程?否则我怎么做

谢谢

编辑:一些背景。该过程在Autodesk Maya中对几何体执行多项操作。它做得很好。问题是,每隔一段时间,我就会有一个文件,它决定一旦完成并打开一个新场景,就完全退出Maya(或mayapy),而不会出现python警告或错误,也不会出现来自Windows的严重进程错误。它只是死了。不幸的是,我对撞车事件无能为力


我所希望的是一种重新启动因崩溃而死亡的进程的方法。

显然,最近他们改变了Python 3.3中的行为,在这种情况下引发了一个异常:

导致此票据的缺陷是:

但是,如果手动生成工作进程(我使用多处理时通常会这样做),则可以尝试使用进程。is_alive()函数:

事实上,正如masida所说,python 3.3中的错误处理更好。在这里,我检查当一个子进程安静地停止时的超时


这个解决方案是针对python的,它们是如何崩溃的?期望的行为是什么?这是要回滚的事务吗?这只是个例外吗?请提供更多详细信息。正如Paul所说,我们需要更多详细信息来回答您,至少是有问题的代码和您遇到的错误。添加了更多详细信息以帮助解释我希望这样做的原因。感谢您提供的信息。我想我将开始处理自己的流程。
done = False                                   # not finished yet
while not(done):
     job_start = time.time()                   # start time
     Jobs = pool.map_async(args)               # asynchronous pool call  
     redo = False                              # no redo yet
     while not(Jobs.ready()):                  # while jobs are not finished
       if (time.time() - job_start) > maxWait: # check maximum time (user def.)
           pool.terminate()                    # kill old pool
           pool = multiprocessing.pool(args)       # create new pool
           redo = True                         # redo computation
           break                               # break loop, (not finished)
     if not(redo):                             # computation was successful
         result = Jobs.get()                   # get results 
         done = True                           # exit outer while