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>在self.process\u list
最终有许多进程对象被停止。我想把他们从名单上删除。