2013-10-27 62 views
1

我有一個需要大約10秒才能運行的進程。下面的函數將需要大約100秒十個標題條目:使用python並行處理函數

for title in titles_to_update: 
    run_update_procedure(title) 

這將是並行此過程的最佳方法。

pool = Pool(2) 
pool.map(run_update_procedure, list(titles_to_update)) 

是最好的方法去做到這一點?

+2

並行處理不能保證加快你的代碼。什麼是瓶頸?中央處理器? IO?等待資源? etc。 – alko

+0

實際的'run_update_procedure()'是一個需要大約20秒才能完成的API調用 - 基本上我們只是在等待他們的API來處理請求並給我們提供我們需要的東西。 – David542

+1

如果它是CPU綁定的,那麼通過指定比CPU核心更多的進程可能沒有什麼可以獲得的。無論如何,你需要一個Pool「map」函數來將工作分散到所有進程中。 'apply_async()'將把整個列表傳遞給一個進程。試試吧! ;-) –

回答

0

如果您在系統上使用備用核心,並且您在評論中的說明就是這種情況,那麼.map是個不錯的選擇。 順便說一下你描述的任務類型,我可能會使用.imap_unordered。看看文檔here