IPython控制台没有显示某些输出但显示其他输出?

时间:2016-10-04 12:08:04

标签: python ipython python-multiprocessing

Win 7,x64,Python 2.7,Anaconda 4.2.0,IPython 5.1.0

我正在处理一些multiprocessing教程&在IPython控制台中工作时立即遇到问题。下面的代码......

import multiprocessing

print 'hello'

def worker():
    """worker function"""
    print 'Worker'
    return


jobs = []
for i in range(5):
    p = multiprocessing.Process(target=worker)
    jobs.append(p)
    p.start()

我期待......

hello
worker
worker
worker
worker
worker

但我得到了......

hello

为什么worker函数的输出没有显示在IPython控制台中?

编辑:当从Anaconda命令行运行时,它会在print 'Worker'行上出现语法错误,但是如果我继续按Enter键,则从Python控制台运行时会按预期运行。

编辑2:现在在Anaconda命令窗口中工作(我安装了错误的Python)。该问题不仅限于此代码。任何并行化函数中的任何print语句都不会出现在IPython控制台中。

1 个答案:

答案 0 :(得分:0)

试试这个:

for i in range(5):
    p = multiprocessing.Process(target=worker)
    jobs.append(p)
    p.start()
    p.join()

我怀疑ipython在主进程/函数完成时结束了子进程,join应该有助于防止这种情况发生。