同时下载多个页面?

Gul*_*har 2 python concurrent-processing

我想在Python中编写一个脚本,可以从数据库中获取URL,并同时下载网页以加快速度,而不是等待每个页面一个接一个地下载.

根据这个线程,Python不允许这样做,因为有一个名为Global Interpreter Lock的东西会阻止多次激活相同的脚本.

在花时间学习Twisted框架之前,我想确保没有更简单的方法来完成我需要做的事情.

谢谢你的任何提示.

Bar*_*osz 9

不要担心GIL.在你的情况下,这没关系.

最简单的方法是使用线程模块和ASPN中的一个线程池实现来创建线程池.该池中的每个线程都可以使用httplib下载您的网页.

另一种选择是使用PyCURL模块 - 它本身支持并行下载,因此您不必自己实现它.


Len*_*bro 7

GIL阻止您有效地使用线程进行处理器负载平衡.由于这不是处理器负载平衡但是阻止一个IO等待停止整个下载,因此GIL与此无关.*)

所以你需要做的就是创建几个同时下载的进程.您可以使用线程模块或多处理模块来完成此操作.

*)嗯...除非你有千兆连接,你的问题实际上是你的处理器在你的网络之前超载.但这显然不是这里的情况.