Python urllib.urlopen()是否延迟下载数据?

Python urllib.urlopen()是否延迟下载数据?,python,parsing,image-processing,html-parsing,urllib2,Python,Parsing,Image Processing,Html Parsing,Urllib2,查看从url的html中选择图像的reddit python代码: 在_fetch_image_size中,它们使用urllib2,就好像只有在调用response.read1024之后才下载图像字节一样。我搜索了一下,确认urllib2经过优化,只有在调用read时才延迟下载字节,但是我找不到关于返回类型httplib.HTTPResponse的很多文档。只是它是一个类似文件的对象,所以您可以对其调用read 我测试了urllib2.urlopen,它对我来说有一点延迟,但可能这只是打开套接字

查看从url的html中选择图像的reddit python代码:

在_fetch_image_size中,它们使用urllib2,就好像只有在调用response.read1024之后才下载图像字节一样。我搜索了一下,确认urllib2经过优化,只有在调用read时才延迟下载字节,但是我找不到关于返回类型httplib.HTTPResponse的很多文档。只是它是一个类似文件的对象,所以您可以对其调用read


我测试了urllib2.urlopen,它对我来说有一点延迟,但可能这只是打开套接字的延迟。对于较大的映像,对结果调用read非常快。

调用urlib2.urlopen时,它会创建一个套接字,并将数据从服务器发送到客户端。此时,套接字处于关闭等待状态。这意味着它正在等待客户端调用套接字上的close,这在使用read时发生

为了回答您的问题,所有的数据都会发送给您,而不管您阅读了多少,并且在阅读之前发生


干杯

非常有趣,那么reddit似乎没有获得他们在评论中暗示的全部性能优势,尽管他们确实避免了循环浏览其余的图像数据。边栏-有没有像不将完整的图像字节数据加载到内存中这样的内存优势?我的知识有点模糊。对于这个答案,您是否有我可以阅读更多的参考资料,或者您只是非常熟悉urllib2的内部工作原理?我监控了套接字,并让它在过程中的不同位置暂停。在从urllib2.urlopen返回的对象中的初始请求之后,所有内容都已在内存中,但如果重复,则会保存额外的内存。