【发布时间】:2011-01-31 20:36:56
【问题描述】:
我已经编写了一些 python 脚本来从 HTTP 网站下载图像,但是因为我使用的是 urllib2,所以它会关闭现有连接,然后在打开另一个连接之前打开另一个连接。我不太了解网络,但这可能会大大减慢速度,并且一次抓取 100 张图像需要相当长的时间。
我开始寻找 pycurl 或 httplib 等其他替代方案,但发现与 urllib2 相比,它们难以计算,并且没有找到很多我可以直接使用的代码 sn-ps。
简单地说,我将如何建立与网站的持久连接并下载许多文件,然后仅在完成后关闭连接? (可能是显式调用关闭它)
【问题讨论】:
-
与一般图像的大小相比,我认为这几个字节的网络开销并不算多。除非你有相反的证据,否则这可能不值得麻烦。
-
Dive into Python 完成了类似的任务。
-
我不同意网络开销并没有太大的区别。因为 auf TCP 慢启动 (en.wikipedia.org/wiki/Slow-start) 每个新创建的连接一开始都会很慢。因此,如果数据足够大,重用相同的 TCP 连接会有所不同(我认为 100 张图片将在 10 到 100 MB 之间)
-
“我要与网站建立持久连接吗” 好问题。取决于网络服务器。您需要检查标头以查看支持的软件和 HTTP 协议的版本。