Python Glossary English

все 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Сообщить о неточности