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