Python 多个urllib2连接
我想同时下载多个图像。为此,我使用线程,每个线程使用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
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=”行的工具和结果数据?