2016-10-04 83 views
0

的Win 7,64,Python 2.7版,蟒蛇4.2.0,5.1.0的IPythonIPython控制台不显示某些输出,但显示其他人?

我通过一些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)。这个问题似乎不仅限于此代码。任何并行化函数中的任何打印语句都不会出现在IPython控制台中。

+1

顺便说一句,SO需要2条换行符才能在新行上显示文本。使用代码格式来解决这个问题。 – Carcigenicate

+0

我怀疑这一点,因为在你给工人一个印刷机会之前,程序正在结束。 – Carcigenicate

+0

您可以通过防止程序以某种方式结束测试,例如在开始作业后询问用户输入。 – Carcigenicate

回答

0

试试这个:

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

我怀疑IPython的即将结束的子进程时的主要过程/函数完成,且join应有助于防止。

+0

'join()'没有效果。这似乎是IPython控制台不打印并行化函数内部的任何内容的问题 – DrBwts