使用python的并行编程';s多处理和进程失效

使用python的并行编程';s多处理和进程失效,python,join,parallel-processing,multiprocessing,wait,Python,Join,Parallel Processing,Multiprocessing,Wait,我在使用多处理创建并行程序时遇到问题。AFAIK当我使用这个模块启动一个新进程(多进程)时,我应该执行“os.wait()”或“childProcess.join()”来获取它的“退出状态”。但是,如果子进程发生了什么事情(子进程将挂起),在我的程序中放置上述函数可能会导致主进程停止 问题是,如果我不这样做,我将使子进程变成僵尸(并将在顶部列表中以类似“python”的形式列出) 是否有任何方法可以避免等待子进程结束,避免创建僵尸进程,或者避免对主进程的子进程造成太多麻烦?您可能需要提供更多信息

我在使用多处理创建并行程序时遇到问题。AFAIK当我使用这个模块启动一个新进程(多进程)时,我应该执行“os.wait()”或“childProcess.join()”来获取它的“退出状态”。但是,如果子进程发生了什么事情(子进程将挂起),在我的程序中放置上述函数可能会导致主进程停止

问题是,如果我不这样做,我将使子进程变成僵尸(并将在顶部列表中以类似“python”的形式列出)


是否有任何方法可以避免等待子进程结束,避免创建僵尸进程,或者避免对主进程的子进程造成太多麻烦?

您可能需要提供更多信息或实际代码来解决这个问题。您是否已经阅读了,特别是标有“警告”的章节?例如,您可能面临以下情况:

警告:如上所述,如果子进程已将项放入队列(并且未使用JoinableQueue.cancel\u join\u thread()),则该进程将不会终止,直到所有缓冲项都刷新到管道

这意味着,如果您尝试加入该进程,则可能会出现死锁,除非您确定已放入队列的所有项目都已被使用。类似地,如果子进程是非守护进程,则父进程在尝试加入其所有非守护子进程时可能会挂起退出

请注意,使用管理器创建的队列没有此问题。参见编程指南


尽管ARS的答案应该解决你目前的问题,你可以考虑看芹菜:这是一种相对开发人员友好的方法来实现这些目标以及更多