پاسخ تمرینات ماژول threading – ایجاد thread

Please login to bookmark Close

پاسخ تمرین ۱

  • ساخت instance از کلاس Thread
  • ارث بری از کلاس Thread و override کردن __init__ و run و ساخت instance از کلاس ارث بری شده

پاسخ تمرین ۲

ویژگیروش اول – ساخت instanceروش دوم – ارث بری
سادگی استفادهبیشترکمتر
انعطاف پذیریکمتربیشتر
تعداد خطوط کدکمتربیشتر
خوانایی کدخواناتر برای کارهای سادهخواناتر برای کارهای پیچیده تر
مدیریت حالت (state)سخت‌تر برای حالات پیچیدهراحت‌تر
قابلیت استفاده مجددکمتربیشتر (در صورت درست بودن معماری)
جدول مقایسه ویژگی‌های روش اول و دوم

پاسخ تمرین ۳

روش اول – ساخت instance از کلاس Thread

import time
from threading import Thread

def say_hi(name):
    time.sleep(1)
    print('hi', name)

t1 = Thread(target=say_hi, args=('Ali', ))
t2 = Thread(target=say_hi, args=('Hamid', ))
t3 = Thread(target=say_hi, args=('Farzane', ))
t4 = Thread(target=say_hi, args=('Reza', ))

t1.start()
t2.start()
t3.start()
t4.start()

روش دوم ارث بری از کلاس Thread و override کردن آن

import time
from threading import Thread

class MyThread(Thread):
    def __init__(self, target, args):
        super().__init__()
        self.target = target
        self.args = args
    
    def run(self):
        self.target(*self.args)

def say_hi(name):
    time.sleep(1)
    print('hi', name)

t1 = MyThread(target=say_hi, args=('Ali', ))
t2 = MyThread(target=say_hi, args=('Hamid', ))
t3 = MyThread(target=say_hi, args=('Farzane', ))
t4 = MyThread(target=say_hi, args=('Reza', ))

t1.start()
t2.start()
t3.start()
t4.start()

تمرین ۴ – دانلودر

import requests
import os
from threading import Thread


class MyThread(Thread):
    def __init__(self, target, args):
        super().__init__()
        self.target = target
        self.args = args
    
    def run(self):
        self.target(*self.args)


# فهرست آدرس‌های فایل‌ها
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")

# شروع دانلود هر فایل به صورت متوالی
threads = []
for file_url in file_urls:
    t = MyThread(target=download_file, args=(file_url, {}, {}))
    threads.append(t)

for t in threads:
    t.start()

print("All files downloaded successfully.")
Please login to bookmark Close
نظرات

دیدگاهتان را بنویسید

فهرست مطالب

سرفصل دوره

تمرین

این قسمت تمرین ندارد!

پاسخ تمرین ها

هنوز برای تمرین‌های این قسمت پاسخی ثبت نشده است!

اشتراک گذاری

چرا بهتره از فیلترشکن استفاده کنید؟

من همه ویدئو ها و پادکست های کُدباز رو توی یوتیوب و ساندکلود و پلتفرم هایی آپلود می‌کنم که اغلب فیلتر هستند.

اغلب آموزش‌ها ویدئو و پادکست دارند. پس اگر می‌خواهید از محتوای سایت بیشترین استفاده رو ببرید نیاز به فیلتر شکن دارید.

توجه داشته باشید که برای خرید از فروشگاه بهتره فیلتر شکن رو خاموش کنید.

تنظیمات

انتخاب زبان
تغییر تم