import multiprocessing
import time
import requests
def download_video(url, filename):
start_time = time.time()
response = requests.get(url, stream=True)
with open(filename, 'wb') as f:
for chunk in response.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
end_time = time.time()
print(f"Downloaded {filename} in {end_time - start_time:.2f} seconds.")
if __name__ == "__main__":
video_urls = {
"A.avi": "http://example.com/path/to/A.avi",
"B.avi": "http://example.com/path/to/B.avi"
}
processes = []
for filename, url in video_urls.items():
p = multiprocessing.Process(target=download_video, args=(url, filename))
processes.append(p)
p.start()
for p in processes:
p.join()
說明:
import 部分:
multiprocessing 模組用於創建和管理多個進程。
time 模組用於計算下載所花費的時間。
requests 模組用於進行 HTTP 請求和下載文件。
download_video 函數:
接受 url 和 filename 參數,開始計時。
使用 requests.get 進行下載,並將文件保存到本地。
結束計時並打印下載所花費的時間。
main 部分:
定義兩個視頻的下載 URL 和文件名。
創建多個進程,每個進程負責下載一個視頻。
啟動所有進程並等待它們完成。
注意事項:
將 http://example.com/path/to/A.avi 和 http://example.com/path/to/B.avi 替換為實際的視頻下載鏈接。
在使用 requests 下載大文件時,可以設置合適的 chunk_size 來平衡內存使用和下載速度。
確保所使用的下載鏈接是可用的,並且下載過程不會被防火牆或網絡設置阻止。
這段程式碼將同時下載兩個視頻並顯示每個視頻的下載時間。利用 multiprocessing,可以有效地利用多核 CPU 的性能,提高下載效率。