ipython和fork()

NPE*_*NPE 7 python fork process ipython

我正在计划一个Python脚本,它将os.fork()用于创建一堆子进程来执行一些计算.父进程将阻塞,直到子进程终止.

扭曲的是我需要能够从Unix shell使用pythonipython使用来运行脚本%run.

子进程应该以什么方式终止以避免重新进入ipython命令提示符?根据我的经验,sys.exit()不会这样做.

NPE*_*NPE 8

以下似乎有效:

import os, sys

child_pid = os.fork()
if child_pid == 0:
  print 'in child'
  os._exit(os.EX_OK)
  print 'hm... wasn''t supposed to get here'
else:
  print 'in parent'
Run Code Online (Sandbox Code Playgroud)

诀窍是使用os._exit()而不是sys.exit().该文档包含以下段落:

注意退出的标准方法是 sys.exit(n)._exit()通常只应在fork()后的子进程中使用.