我正在嘗試使用python創建一個多線程下載程序。假設我有一個鏈接到100MB大小的視頻,我想用5個線程下載它,每個線程同時下載20MB。爲了實現這個目標,我必須將初始響應分成5個部分,代表文件的不同部分(如0-20MB,20-40MB,40-60MB,60-80MB,80-100MB),我搜索並找到了http範圍標題可能有幫助。 這裏的示例代碼如何將http響應分成塊?
from urllib.request import urlopen,Request
url= some video url
header = {'Range':'bytes=%d-%d' % (5000,10000)} # trying to capture all the bytes in between 5000th and 1000th byte.
req=Request(url,headers=header)
res=urlopen(req)
r=res.read()
但上面的代碼讀取整個視頻,而不是我想要的字節,它顯然是行不通的。那麼有什麼方法可以讀取視頻任意部分的指定範圍的字節,而不是從開始讀取?請嘗試用簡單的詞語來解釋。
如果瓶頸是連接的帶寬,多線程下載器可能不會讓事情變得更快。 – martineau
請參閱關於此主題的[_Byte serving_](https://en.wikipedia.org/wiki/Byte_serving)維基百科文章。響應的Content-Range頭部會告訴你什麼字節被傳送。 – martineau
是的,我同意你的意見。我只想嘗試一下。 – Airbear