все Python 3multiprocessingфункция
multiprocessing.active_children()
процессы
Список ещё живых дочерних процессов текущего процесса. Заодно «подбирает» уже завершившихся детей, чтобы они не висели зомби.
Синтаксис
multiprocessing.active_children()
Видны только прямые дети, запущенные через multiprocessing в этом процессе: внуки и процессы из subprocess в список не попадают. Побочный эффект полезен — вызов делает join() завершившимся детям, поэтому его иногда зовут в цикле долгой программы. Типичный приём при выходе — пройти по active_children(), вызвать terminate() и join(), чтобы не оставить висящих процессов.
Примеры
import multiprocessing as mp
def wait_for(ev):
ev.wait(10)
if __name__ == '__main__':
ctx = mp.get_context('spawn')
ev = ctx.Event()
ps = [ctx.Process(target=wait_for, args=(ev,)) for _ in range(2)]
for p in ps:
p.start()
print(len(mp.active_children())) # → 2
ev.set()
for p in ps:
p.join()
print(mp.active_children()) # → []
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности