Python Glossary English

Python 3.8+multiprocessingфункция

multiprocessing.parent_process()

процессы

Возвращает объект Process родителя текущего процесса, а в главном процессе — None. Появилась в Python 3.8.

Синтаксис

multiprocessing.parent_process()

Самый прямой ответ на вопрос «я главный процесс?»: при spawn ребёнок исполняет главный модуль под именем __mp_main__, и проверять __name__ для этого неудобно, а parent_process() is None однозначно. pid из него совпадает с os.getppid() ребёнка, а is_alive() позволяет ребёнку заметить, что родитель умер, и завершиться, вместо того чтобы остаться сиротой.

Примеры

import multiprocessing as mp
import os
def check(q):
    parent = mp.parent_process()
    q.put((parent.pid == os.getppid(), __name__))
if __name__ == '__main__':
    print(mp.parent_process())  # → None
    ctx = mp.get_context('spawn')
    q = ctx.Queue()
    p = ctx.Process(target=check, args=(q,))
    p.start()
    print(q.get(timeout=10))  # → (True, '__mp_main__')
    p.join()

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности