有沒有一種方法可以提高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