Мне интересно, есть ли в многопроцессорном модуле встроенная реализация, которая позволяла бы мне сохранять запущенные процессы в структуре на основе списка, и всякий раз, когда процесс завершается выполнением, он автоматически удаляется из списка.
В коде это будет выглядеть так:
from multiprocessing import process
pool = [] # This data structure needs to prune non-running processes
class A(Process):
def run():
pass
for i in range(0, 10):
worker = A().start()
pool.append(worker)
# So if I want to iterate the pool now, It should only contain the alive processes
Еще один способ справиться с этим - сохранить словарь:
pool = {
processId: processObject
}
А затем получите идентификаторы активного процесса, используя psutil:
current_process = psutil.Process()
children = current_process.children(recursive=False)
Однако, каков будет размер объекта в словаре, когда процесс умрет?