2012-03-31 112 views
1

我正在使用下面的代碼來處理像100,000個鍵和值的字典......我想通過執行多處理/多線程來使它更快,因爲每個循環都獨立於另一個循環。誰能告訴我如何申請和一個(多/多線程)更容易對這種做法如何在我的代碼上使用多處理/多線程?

from urlparse import urlparse 

ProcessAllURLs(URLs) 

ProcessAllURLs(URLs) 
def ProcessAllURLs(URLs): 
    for eachurl in URLs: 
      x=urlparse(eachurl) 
      print eachurl.netloc 

感謝

回答

1

我會建議Python's multiprocessing library。特別是研究the section labeled "Using a pool of workers"。重寫上述代碼應該非常快,以便它使用系統的所有可用內核。

但有一點建議:不要打印來自泳池工作人員的網址。最好將答案傳回主流程,並將其彙總到那裏進行打印。從不同的進程打印會導致很多混亂的,不協調的控制檯輸出。

1

多處理庫可能是最適合您的示例。它看起來像你的代碼可以改寫爲:

from urlparse import urlparse 

nprocs = 2 # nprocs is the number of processes to run 
ParsePool = Pool(nprocs) 
ParsedURLS = ParsePool.map(urlparse,URLS) 

地圖功能是一樣的內置地圖功能,但運行的每個函數調用一個單獨的進程。

有關多處理的更多信息,請參閱http://docs.python.org/library/multiprocessing.html

相關問題