2017-02-18 61 views
1

我有一個列表我想運行一個代碼塊,但列表長度爲幾千項,並且它需要太長的時間迭代它們。如何在python中同時在列表中的所有項目上運行代碼塊

有沒有一種方法可以讓我的腳本同時對該列表中的每個項目執行檢查?

我的代碼如下所示:

def check_url(url_loc): 
    response1 = requests.get(url_loc) 
    time.sleep(10) 
    response2 = requests.get(url_loc) 
    if response1 != response2: 
     print(url_loc + "has changed go check now:" + url_loc) 
    else: 
     pass 

while True: 
    all(check_url(loc) for loc in sitelocations) 
+1

爲什麼你有一個'time.sleep'在你的功能?這會減慢速度。這個功能應該做什麼? – qxz

+0

@qxz這段代碼似乎比較相隔10秒,因此睡眠。 – bli

回答

0

如果你真的想要同時做到這一點,你可以使用線程。 這是一個關於線程的網站:https://docs.python.org/3.4/library/threading.html 但我確信有一個更簡單的方法。線程就像一切反覆地做一些事情,直到一切都完成了,而且非常複雜。 我想你可以試着加快你的代碼。如果你使用IDLE,它會一直很慢,你得到的時間實際上並不正確。它實際上可以走得更快。 我希望這可以幫助。

+0

Python中的線程沒有同時執行,它們通過GIL進行調度。線程可以幫助I/O調用,當有很多推送和等待數據時,但實際上會損害計算任務的性能。 – zwer

相關問題