تمرین ۱ – بهینه سازی دانلودر
تکه کد زیر برنامهای است که لیستی از آدرس فایلها را میگیرد و دانلود میکند. برای افزایش سرعت دانلود فایل ها، این برنامه را با مولتی تردینگ بازنویسی کنید. برای اینکه dummyimage شما را بلاک نکند، اجازه ندهید بیش از ۵ ترد در یک لحظه ساخته شود.
import requests
import os
# فهرست آدرسهای فایلها
file_urls = [f"https://dummyimage.com/{i}.png" for i in range(300, 400)]
# تابع برای دانلود هر فایل
def download_file(file_url, cookies, headers):
file_name = os.path.basename(file_url) # نام فایل از آخرین بخش آدرس استخراج میشود
file_path = os.path.join("downloads", file_name) # مسیر محلی برای ذخیره فایلها
print(f"Downloading {file_name}...")
# دانلود فایل با استفاده از کتابخانه requests
response = requests.get(file_url, cookies=cookies, headers=headers)
with open(file_path, 'wb') as f:
f.write(response.content)
print(f"{file_name} downloaded successfully.")
# ایجاد پوشه downloads اگر وجود نداشته باشد
if not os.path.exists("downloads"):
os.makedirs("downloads")
# شروع دانلود هر فایل به صورت متوالی
for file_url in file_urls:
download_file(file_url, {}, {})
print("All files downloaded successfully.")