Являются ли движки IPython независимыми процессами?

Из документации по обзору архитектуры IPython мы знаем, что...

Механизм IPython - это экземпляр Python, который принимает команды Python через сетевое соединение.

Учитывая, что это экземпляр Python, означает ли это, что эти движки являются самостоятельными процессами? Я могу вручную загрузить набор двигателей с помощью команды, как ipcluster start -n 4, Таким образом, считается ли создание механизмов созданием дочерних процессов какого-либо родительского процесса или просто средством запуска набора независимых процессов, которые полагаются на связь IPC для выполнения своей работы? Я также могу вызвать двигатель через ipengine команда, которая, безусловно, является автономной, поскольку она вводится непосредственно в командную строку ОС и не имеет отношения к чему-либо на самом деле.

В качестве фона я пытаюсь понять, как многие движки IPython, манипулируемые через Client из скрипта python, будут взаимодействовать с другим процессом, запущенным в этом скрипте.

1 ответ

Решение

Вот простой способ выяснить, какие процессы задействованы, распечатать список текущих процессов перед тем, как я отключу контроллер и механизмы, а затем распечатать список после того, как они будут запущены. Есть wmic команда, чтобы сделать работу...

C:\>wmic process get description,executablepath

Интересно, что контроллер запускает 5 процессов Python, и каждый движок создает один дополнительный процесс Python. Таким образом, из этого исследования я также узнал, что двигатель - это собственный процесс, а также контроллер...

C:\>wmic process get description,executablepath | findstr ipengine
ipengine.exe                   C:\Python34\Scripts\ipengine.exe
ipengine.exe                   C:\Python34\Scripts\ipengine.exe

C:\>wmic process get description,executablepath  | findstr ipcontroller
ipcontroller.exe               C:\Python34\Scripts\ipcontroller.exe

Судя по всему, все они кажутся автономными, хотя я не думаю, что список запущенных процессов ОС несет какую-либо информацию о том, как процессы связаны с отношениями родитель / потомок. Это может быть только формализм для разработчиков, который не имеет представления, который отслеживается в ОС, но я не знаю, что это за внутреннее устройство, которое нужно знать в любом случае. Экземпляры Python присутствуют в ipcontroller и ipengine

Вот окончательная цитата из MinRK, которая напрямую касается этого вопроса:

"Каждый движок - это отдельный изолированный процесс... Каждое ядро ​​- это отдельный процесс, который может быть на любой машине... Это как если бы вы запустили сеанс терминального IPython, а каждый движок - это отдельный сеанс IPython. Если вы выполните a=5 в этом, а =10 в этом, у этого парня 10, у этого парня 5 ".

Вот дальнейшая окончательная проверка, основанная на отличном вопросе SE Hot Network о ServerFault, в котором упоминается об использовании ProcessExplorer, который фактически отслеживает родительские дочерние процессы...

Process Explorer - это инструмент Sysinternals, поддерживаемый Microsoft. Он может отображать командную строку процесса в диалоговом окне свойств процесса, а также родительский элемент, запустивший его, хотя имя этого процесса может быть недоступно. --Corrodias

Если я запускаю больше движков в другом командном окне, этот раздел ProcessExplorer просто дублируется, как показано на скриншоте. Раздельный ipcontroller и ipengine запуск процессов

И просто ради полноты, вот что за команда ipcluster start --n=5 похоже... IP-кластер запуска процессов

Другие вопросы по тегам