2014-09-19 42 views
-1

我一直在嘗試使用enthought canopy(Windows 8)進行多處理。我想下面的例子:Python Enthought Canopy:多處理無法正常工作

import multiprocessing 

nProcesses=3 

def worker(): 
    """worker function""" 
    print "working" 
    return 

if __name__ == '__main__': 
jobs = [] 
for i in range(nProcesses): 
    p = multiprocessing.Process(target=worker) 
    jobs.append(p) 
    p.start() 

接近的例子,你在網上找到一個copypaste ...

的過程被創建,但似乎什麼也不做。沒有打印「工作」。我運行我的文件(main.py)從Canopy提供的環境(IDLE我認爲),但我不復制這些行在解釋器中,我運行整個腳本(如%運行「D:/路徑/ main.py「)

我在做什麼錯?

+0

您沒有做錯任何事,IDLE只是不處理正確打印子進程的輸出。如果要直接從命令提示符運行腳本,它將按照您的預期運行。 – dano 2014-09-19 02:45:27

回答

1

Canopy的python shell是IPython的QtConsole(不是IDLE)。

QtConsole將計算與控制檯輸出(前端)分開。要確保文本在需要時打印,請在打印聲明後插入:

sys.stdout.flush()