2015-06-11 3 views
0

Я использую модуль многопроцессорности для запуска фрагмента кода для разных процессов. В какой-то момент в коде мне нужно знать, выполняется ли код главным процессом или одним из созданных дочерних процессов.Многопроцессорность Python: имя основного процесса

Во всех случаях я пробовал, имя текущего процесса всегда «MainProcess»:

>>> import multiprocessing 
>>> multiprocessing.current_process().name 
'MainProcess' 

Это питон конвенции, я могу рассчитывать на, чтобы убедиться, что мой кусок кода выполняется по основному процессу (при условии, что ни один другой процесс не назван таким образом)? В противном случае, есть ли другой способ, который я должен использовать, чтобы узнать, какой процесс выполняет часть кода?

Спасибо!

+1

Я вижу, что основной процесс имеет разные '' ', чем дочерние процессы. Возможно, это лучший способ проверить это. – kindall

+0

типа '>>> (multiprocessing.current_process()) Тип' ' multiprocessing.process._MainProcess' ' >>> (процесс()) '' multiprocessing.process.Process' Это выглядит как приемлемый ответ. Вы должны опубликовать это как ответ, а не комментарий, чтобы я мог его принять. –

+0

Справедливо, сделано. – kindall

ответ

1

Похоже, что основной процесс имеет разные type, чем дочерние процессы. Основной процесс - mulitprocessing.process._MainProcess, а дочерние процессы - multiprocessing.process.Process. Возможно, это лучший способ проверить это.

Теперь, поскольку имя типа _MainProcess имеет ведущее подчеркивание, оно должно быть «частным», то есть это деталь реализации, которая может измениться. Это не кажется вероятным, но вы можете проверить, не является ли текущий процесс не типа Process, а не проверяется, есть ли он типа _MainProcess.

+0

Примечание: класс '_MainProcess' наследуется от' Process', что делает 'isinstance (multiprocessing.current_process(), multiprocessing.Process)' return 'True' как из основного, так и для дочернего процессов. Решение работает с 'type (multiprocessing.current_process()) == multiprocessing.Process', хотя это не проверяет тип родительских классов. –

Смежные вопросы