2017-02-18 64 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

相关问题