2016-11-30 67 views
1

我有一个微小的愚蠢的代码,这使得很多请求谷歌搜索服务ThreadPoolExecutor +请求==死锁?

from concurrent.futures import ThreadPoolExecutor 
import requests 

import requests.packages.urllib3 
requests.packages.urllib3.disable_warnings() 


def check(page): 
    r = requests.get('https://www.google.ru/#q=test&start={}'.format(page * 10)) 
    return len(r.text) 

import time 

def main(): 
    for q in xrange(30): 
    st_t = time.time() 
    with ThreadPoolExecutor(20) as pool: 
     ret = [x for x in pool.map(check, xrange(1,1000))] 
     print time.time() - st_t 

if __name__ == "__main__": 
    main() 

和它的作品先,但随后事情错了。所有20条线程都是活着的,但是它们什么都不做。我可以看到,他们还活着,但我实际上不明白为什么没有发生。

任何想法可能是错的?

回答