有没有一种方法可以提高Python下载速度?python下载速度非常慢
我有一个程序,我在VB6中写道,不用尝试就抽出Python。我把这个东西转换过来了,现在我正在尝试它,Python(linux)中的东西似乎慢了两倍。即使是该程序的初始版本,似乎花费的时间也超过了我在Windows上使用它的时间。
我试过使用urllib
(2.7),urllib.request
(3.3)和requests
。目前我正在尝试urllib3
,它也没有更快。在Windows上通常需要45分钟的时间看起来好像在Linux上需要接近2小时才能在同一台互联网连接上的同一台计算机上完成相同的任务。这项任务只是搜索互联网和下载文件,当搜索找到它正在寻找什么......只是一个潜在的文件名称的跨度。
我也会问,因为它已经发生了不止一次,今天下午到目前为止,我该如何检测110错误代码(连接超时)。我在下面使用的是不起作用,它仍然杀死了该程序。
import urllib3
http = urllib3.PoolManager()
def dl_10(self):
self.NxtNum10 = int(self.HiStr10)
while self.NxtNum10 < int(self.HiStr10)+9999:
url = 'http://www.example.com/videos/encoded/'+str(self.NxtNum10)+'.mp4'
r = http.request('GET', url)
if r.status==404:
self.NxtNum10 +=1
continue
elif r.status==110:
continue
else:
urllib.request.urlretrieve(url,str(self.NxtNum10)+'_1.mp4')
statinfo = os.stat(str(self.NxtNum10)+'_1.mp4')
if statinfo.st_size<10000:
os.remove(str(self.NxtNum10)+'_1.mp4')
else:
self.End10 = self.NxtNum10
self.NxtNum10 +=1
self.counter +=1
self.NxtNum10 = 'FINISHED'
这是通过线程运行,我不认为这应该有任何区别。就像我说的那样,使用urllib(2.7)进行初始写入也很慢,而且没有使用线程,我只是像在Windows上一样运行程序10次。
有没有更快的方法从Python上抓取东西?
你说的是总时间,或个人时间?它看起来像你顺序下载,而不是并行下载。 – Keith
我有10个单独的threecks依次通过10,000个文件。 Windows上的每个程序(VB6)通常需要45-50分钟才能完成一个完整周期(所有10个程序一次运行)。在linux/Python一小时内,我只能通过每个线程超过3000个文件。因此,为什么我对速度的缺乏感到震惊。唯一改变的是Windows到Linux和VB6到Python。其他一切都是一样的。我昨天晚上要在Windows上试用Python。我厌倦了试图安装模块并放弃。 Linux对于使用Python来说是FAR优越的。 – confused
是的,我可以从你的风格看到你更熟悉VB。 ;)我不知道从这里发生了什么,但你可以尝试pycurl(python wrapper for libcurl)。 – Keith