2017-04-17 38 views
2

Python 3.6Python多重處理如何更快地創建腳本?

我正在編寫一個腳本來自動執行檢查以確保網站上的所有鏈接正常工作。

我有它的一個版本,但它運行緩慢,因爲python解釋器一次只運行一個請求。我輸入了硒以將鏈接拖入列表中。我從一個41000鏈接列表開始。我擺脫了重複現在我下降到7300鏈接在我的名單。我正在使用請求模塊來檢查響應代碼。我知道多處理是答案,只是看到一堆不同的方法。哪個對我的需求最好?我唯一需要記住的是我不能一次運行多個線程,所以我不會在我們的服務器上發送我們的web服務器線程以滿足要求。先謝謝了。這是我第一次發帖到論壇,所以如果我沒有遵循協議,請原諒。在先進的感謝

特拉維斯

下面是檢查與蟒蛇請求模塊,我試圖加快鏈接的功能:

def check_links(y): 
 
    for ii in y: 
 
     try: 
 
      r = requests.get(ii.get_attribute('href')) 
 
      rc = r.status_code 
 
      print(ii.get_attribute('href'), ' ', rc) 
 
     except Exception as e: 
 
      logf.write(str(e)) 
 
     finally: 
 
      pass

回答

0

如果你只需要要將相同的功能應用於列表中的所有項目,只需使用進程池並映射輸入。下面是一個簡單的例子:

from multiprocessing import pool 

def square(x): 
    return {x: x**2} 

p = pool.Pool() 
results = p.imap_unordered(square, range(10)) 

for r in results: 
    print(r) 

在我使用imap_unordered的例子,但也要看mapimap。您應該選擇最符合您需求的產品。