我正试图直接从SEC ftp服务器下载SEC文件。当我使用urllib.urlretrieve(url,dst)时,它所用的时间比page = urllib.urlopen(url).read()和writeFile.write(page)这样的操作要长得多。例如:
from time import time
import urllib
url = 'ftp://ftp.sec.gov/edgar/data/886475/0001019056-13-000804.txt'
t0 = time()
urllib.urlretrieve(url,'D:/temp.txt')
t1 = time()
t = t1-t0
print "urllib.urlretrieve time = %s" % t
t0 = time()
writefile = open('D:/temp2.txt','w')
page = urllib.urlopen(url).read()
writefile.write(page)
writefile.close()
t1 = time()
t = t1-t0
print "urllib.urlopen time = %s" % t当我运行这个程序时,urllib.urlretrieve和urllib.urlopen块分别得到33秒和2.6秒。如果我看D驱动器,整个~5.6MB的下载速度非常快,但它挂起大约30秒。这里发生什么事情?我可以使用urllib.urlopen方法继续我的项目,但是我想知道未来的项目。我正在运行Windows 7专业64位,这是Python2.7。提前谢谢你的帮助。
发布于 2013-11-21 01:21:32
时间是一件有趣的事情,特别是考虑到网络的无状态环境。
虽然我没有冒烟的枪,但我建议你看看urllib的来源 (从2.7岁起)。
您可以在第69行:def urlopen和第87行:def urlretrieve看到。两者都创建了一个FancyURLopener(),但都在类中调用了单独的函数。
我最好的猜测是,拖延要么是围绕着:
您可以随时黑入您的urllib.py源代码,以打印每个子函数调用的时间,即使只是暂时跟踪挂起。若要定位安装存储urllib.py的位置,请使用以下命令:
import urllib
print urllib.__file__https://stackoverflow.com/questions/20110090
复制相似问题