2012-10-10 27 views
4

我有一個問題,我無法弄清楚是什麼問題。嵌入式代碼(來自3.2文檔的最簡單的示例代碼,僅用於調試)不會運行目標函數。該過程完成後,程序導入並運行時沒有錯誤,Python 3.2已正確安裝並且目錄已添加到Path環境變量中。我使用f5從IDLE運行程序,並且其他任何代碼都可以正常工作,但目標函數'f'(在本例中)內的代碼很簡單,不會運行。正如你所能理解的,這是令人沮喪的。該代碼不會打印,並且目標函數(以及任何函數)內的每個測試打印都不會執行;它被簡單地跳過。Python 3.2多處理。進程沒有運行目標函數

#!/usr/bin/env python 
from multiprocessing import Process 

def f(name): 
    print('hello', name) 

if __name__ == '__main__': 
    p = Process(target=f, args=('bob',)) 
    p.start() 

有什麼想法?我在Windows 7系統上運行Python 3.2,並且使用Python 2.7在我的系統上成功運行多處理(儘管我的項目需要我在3.2中進行開發)。抱歉,我認爲這樣一個簡單的問題肯定是一些路徑問題,但我不確定我可能需要做些什麼來完成這項工作,並且無法從Google獲得任何解決方案,因爲Python肯定會識別該包(並且拼寫錯誤時失敗);它只是行爲不正確。感謝您的任何幫助/建議!

+1

嘗試運行IDLE以外的腳本... –

+0

@BlaXpirit,確實有效(很多人感謝! - 我覺得先不要嘗試這種方法),但它對調試/反饋目的沒什麼幫助。也許這是浪費時間來修復它,我應該停止使用閒置,但我不知道是否有更深的問題,我不會解決? – mikeybaby173

+1

看來這是IDLE的一個已知問題:http://www.prodigyproductionsllc.com/articles/programming/multiprocessing-bug-with-windows-and-python-idle/。如果您需要使用多重處理,則可能值得研究更好的IDE。 –

回答

2

多處理和IDLE不能很好地協同工作。確保它在IDLE之外運行,如果是這樣,你就很好。

我不使用IDE的自己,所以我沒有別人爲你提供的,但令人吃驚的是簡單print S如何有用的可以進行調試。