我有一个很小的愚蠢的代码,它向google搜索服务发出了很多请求
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看到他们还活着,但实际上我不明白为什么没有发生。
任何想法可能出错?
答案 0 :(得分:1)
似乎,答案就在那里。
https://github.com/kennethreitz/requests/issues/2649 https://github.com/kennethreitz/requests/issues/2925
答案 1 :(得分:1)