我在100,000到500,000个URL之间的任何地方发出头部请求,以返回大小和HTTP状态代码。我尝试了四种不同的方法:线程池,异步扭曲客户端,grequests实现和基于concurrent.futures的解决方案。在与此类似的previous question中,线程池实现据说在6到10分钟内完成。尝试使用确切的代码并提供100,000个URL的虚拟列表需要在我的计算机上运行4个小时。我的扭曲解决方案(不同于链接问题中提到的解决方案)同样需要大约3.5小时才能完成,与concurrent.futures解决方案相同。
我相对自信我已正确编写了实现,特别是在复制和粘贴前一个示例中的代码的情况下。如何诊断减速发生的位置?我的猜测是,它是在建立连接时,但我不知道如何证明这一点或修复它,如果它是一个问题。我很确定它不是CPU绑定问题,因为100,000个URL之后的CPU时间仅为3分钟。任何帮助,以确定如何诊断问题,反过来修复将非常感激。
更多信息: