Python 如何安全地销毁列表中连接的多处理对象?

Python 如何安全地销毁列表中连接的多处理对象?,python,multiprocessing,Python,Multiprocessing,我正在使用一个列表来跟踪系统中生成的所有进程,并希望实现一个清理机制来删除已停止的进程。以下是一个基本示例: import multiprocessing as mp class WorkerManager: def __init__(self): self.process_list = [] def spawn_process(self): process = mp.Process(target=foo, args=(arg1, ))

我正在使用一个列表来跟踪系统中生成的所有进程,并希望实现一个清理机制来删除已停止的进程。以下是一个基本示例:

import multiprocessing as mp

class WorkerManager:
    def __init__(self):
        self.process_list = []
    def spawn_process(self):
        process = mp.Process(target=foo, args=(arg1, ))
        self.process_list.append(process)
        process.start()
如果我在列表中循环并对不活动的进程调用
multiprocess.terminate()
,我仍然可以看到那里的对象。如何安全地删除引用


注意:虽然它不在上面的示例代码中,但在每个工作进程完成后,我正确地调用了
多处理.join()

您是否尝试过在进程上调用
.close()
?你确定进程没有继续运行吗?你说的“我仍然看到那里的对象”是什么意思?终止进程不会从任何地方删除它们。此外,考虑使用<代码>池< /COD>在多重处理。池< /COM>管理多个进程。@ CasignCyt我指的是引用,即使在终止之后仍然保留在列表中。因此,
self.process\u list
最终有许多进程对象被停止。我想把他们从名单上删除。