2015-05-28 39 views
0

从我们知道IPython Architecture Overview文档...IPython引擎是独立的进程吗?

IPython的引擎是一个Python实例需要Python命令通过网络连接。

鉴于它是一个Python实例,是否意味着这些引擎是独立进程?我可以通过像ipcluster start -n 4这样的命令手动加载一组引擎。这么做是因为引擎的创建被认为是某些父进程的子进程的创建,还是启动了一系列依赖于IPC通信来完成其工作的独立进程的手段?我也可以通过ipengine命令调用一个引擎,它确实是独立的,因为它直接输入到OS命令行中,与任何事情没有任何关系。

作为背景,我试图深入探讨如何通过Python脚本通过客户端操作的许多IPython引擎将与该脚本中启动的另一个进程交互。

回答

1

这里有一个简单的方法来找出所涉及的过程,在我关闭控制器和引擎之前打印当前过程的列表,然后在它们被关闭后打印列表。有一个wmic命令来完成这项工作...

C:\>wmic process get description,executablepath 

有趣的是控制器获取5个蟒蛇流程去,每个引擎创建一个额外的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 instances present from ipcontroller and ipengine

下面是从MinRK一个明确的quote直接解决这个问题:

“每个引擎是它自己独立的进程...每个内核是一个单独的 过程,并可以在任何机器上.. 。就像你启动了一个终端IPython会话,每个引擎都是一个单独的IPython会话,如果你在这个节点上做一个= 5,那么这个人有10个,这个人有10个。

下面是进一步明确的验证,通过对ServerFault一个伟大的SE Hot Network Question,所提到的使用ProcessExplorer的这实际上跟踪父子进程的启发......

的Process Explorer是微软保持的Sysinternals工具。它 可以显示进程的 属性对话框中的进程的命令行以及启动它的父进程,但该进程的名称可能不再可用。 --Corrodias

如果我断火在,你在截图中看到的是ProcessExplorer的部分只是恰好复制另一个命令窗口更多引擎。 Separate ipcontroller and ipengine triggering of processes

而只是为了完整起见,这里什么命令ipcluster start --n=5看起来像...... IP Cluster triggering of Processes