2013-12-15 126 views
1

我使用多處理在Python並行運行我的代碼,如下所示,Python的多處理

result1 = pool.apply_async(set1, (Q, n)) 
result2 = pool.apply_async(set2, (Q, n)) 

SET1和SET2是兩個獨立的功能,這個代碼是在while循環。

然後我試運行時間,如果我按順序運行我的代碼,在特定參數,它是10秒,但是,當我在並行運行,只用了約0.2秒。我用time.clock()來記錄時間。爲什麼運行時間減少了很多,對於並行編程的直覺思維,不應該平行的時間在5秒到10秒之間?我不知道如何在我的報告中分析這個...任何人都可以提供幫助嗎?由於

+0

你最終調用'result1.get()'嗎?你是否檢查過兩種變體(順序/並行)產生相同的結果?你可以使用'timeit.default_timer()'而不是'time.clock()'。或者從命令行調用它:'your_module import setup'中的'python -mtimeit -s',運行; setup();「 「run()的」' – jfs

回答

1

爲了得到一個明確的答案,你需要顯示所有的代碼,並說你使用的操作系統。

我的猜測:您在Linux-y系統上運行,因此time.clock()返回CPU時間(不是掛鐘時間)。然後你用新的,獨特的過程來運行所有的實際工作。這些CPU消耗的CPU時間根本不顯示在主程序的time.clock()結果中。嘗試使用time.time()來代替快速完整性檢查。