Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 多个urllib2连接_Python_Multithreading_Urllib2 - Fatal编程技术网

Python 多个urllib2连接

Python 多个urllib2连接,python,multithreading,urllib2,Python,Multithreading,Urllib2,我想同时下载多个图像。为此,我使用线程,每个线程使用urllib2模块下载一个图像。我的问题是,即使线程(几乎)同时启动,图像也会一个接一个地下载,就像在单线程环境中一样 以下是线程函数: def updateIcon(self, iter, imageurl): req = urllib2.Request('http://site.com/' + imageurl) response = urllib2.urlopen(req) imgdata = response.r

我想同时下载多个图像。为此,我使用线程,每个线程使用urllib2模块下载一个图像。我的问题是,即使线程(几乎)同时启动,图像也会一个接一个地下载,就像在单线程环境中一样

以下是线程函数:

def updateIcon(self, iter, imageurl):
    req = urllib2.Request('http://site.com/' + imageurl)
    response = urllib2.urlopen(req)
    imgdata = response.read()
    gobject.idle_add(self.setIcon, iter, imgdata)
调试我的代码时,我发现下载似乎停留在“response=urllib2.urlopen(req)”行。有什么问题吗?这是因为线程模块或urllib2?我怎样才能解决这个问题


提前感谢

根据我的经验,CPython的多线程似乎比单线程的性能更好。因为CPython有基于内核线程的线程实现。但由于GIL(全局解释器锁)的存在,差异很小。用多线程代替多处理。这很容易。两者都有相似的界面。

考虑使用。它通过进程(而不是线程)支持连接池和多个并发请求。它应该解决这个问题。如果您联系了许多不同的站点,请小心垃圾收集连接池,因为每个站点都有自己的连接池。

您能提供更多信息吗?具体来说,启动线程的代码块,以及用于确定它是否卡在“response=”行的工具和结果数据?