【发布时间】:2020-10-06 16:51:56
【问题描述】:
我在 Jupyter 笔记本中运行以下代码:
import os
print("Start")
pid = os.fork()
if pid == 0:
print("Child")
os._exit(os.EX_OK)
else:
print("Parent")
if pid != 0:
# parent
pid, status = os.waitpid(pid, 0)
print("Done")
我每次都“几乎”得到以下输出:
儿童
开始
家长
完成
如何在“开始”之前打印“孩子”?几乎 10 次中有 9 次,我得到如上所示的输出。有时,我会发现直观的预期(“Start”首先打印,然后是“Parent”或“Child”,最后以“Done”结束)。
当我直接在控制台上运行相同的代码时,每次都会得到预期的结果:
开始
家长
儿童
完成
为什么我们会在 Jupyter 笔记本中看到这种特殊行为?以及如何避免这种情况?
【问题讨论】:
标签: python python-3.x jupyter-notebook ipython fork