2016-11-30 81 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條線程都是活着的,但是它們什麼都不做。我可以看到,他們還活着,但我實際上不明白爲什麼沒有發生。

任何想法可能是錯的?

回答