Python Glossary English

все Python 3multiprocessingфункция

multiprocessing.current_process()

процессы

Возвращает объект Process текущего процесса: в главном это MainProcess, в ребёнке — его Process с именем и pid. Аналог threading.current_thread().

Синтаксис

multiprocessing.current_process()

Имя ребёнка задаётся в родителе (name=...) и при spawn доезжает до ребёнка вместе с объектом — удобно для логов. Рабочие процессы пула называются вроде SpawnPoolWorker-1 или ForkPoolWorker-1, и имя выдаёт способ запуска. Отличать главный процесс по имени 'MainProcess' хрупко: надёжнее parent_process() is None. Атрибуты pid и exitcode у current_process() в главном процессе: pid — свой, exitcode — None, ведь процесс ещё жив.

Примеры

import multiprocessing as mp
def report(q):
    q.put(mp.current_process().name)
if __name__ == '__main__':
    print(mp.current_process().name)  # → MainProcess
    ctx = mp.get_context('spawn')
    q = ctx.Queue()
    p = ctx.Process(target=report, args=(q,), name='worker-1')
    p.start()
    print(q.get(timeout=10))  # → worker-1
    p.join()
import multiprocessing as mp
def name(_):
    return mp.current_process().name
if __name__ == '__main__':
    with mp.get_context('spawn').Pool(1) as pool:
        print(pool.map(name, [0])[0].startswith('SpawnPoolWorker'))  # → True

См. также

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