2016-11-30 3 views
1

У меня есть крошечный глупый код, который делает много запросов к Google поисковой службыThreadPoolExecutor + Requests == deadlock?

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 потоков живы, но тогда они ничего не делают. Я вижу в htop, что они живы, но я действительно не понимаю, почему ничего не происходит.

Любые идеи, что может быть неправильным?

ответ