2015-05-28 3 views
0

Из IPython Architecture Overview документации мы знаем, что ...Являются ли IPython независимыми процессами?

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

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

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

ответ

1

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

C:\>wmic process get description,executablepath 

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

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 instances present from ipcontroller and ipengine

Вот окончательный quote из MinRK, что решает этот вопрос прямо:

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

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

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

Если я выпалить больше двигателей в другом окне командной секции ProcessExplorer просто дублирует точно так, как вы видите на скриншоте. Separate ipcontroller and ipengine triggering of processes

И только ради полноты, вот то, что команда ipcluster start --n=5 выглядит ... IP Cluster triggering of Processes

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