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