2016-10-04 80 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