آموزش ماژول concurrent.futures – کلاس ThreadPoolExecutor

Please login to bookmark Close

برای مدیریت تعداد زیادی از thread ها به کار می‌رود.

به تکه کد زیر توجه کنید:

import time
from concurrent.futures import ThreadPoolExecutor

def task(name):
    print(f"Task {name} started")
    time.sleep(1)
    print(f"Task {name} finished")

with ThreadPoolExecutor(max_workers=2) as executor:
    executor.map(task, [1, 2, 3, 4, 5])

توضیح کد بالا:

  • خط ۹: یک نمونه از کلاس ThreadPoolExecutor به نام executor ساخته‌ایم به نحوی که فقط قادر باشد در هر لحظه فقط نهایتا دو thread را به صورت همزمان اجرا کند.
  • خط ۱۰: تابع task را در thread هایی به صورت همزمان برای لیست مشخص شده اجرا می‌کنیم.

خروجی کد بالا شبیه زیر است.

Task 1 started
Task 2 started
Task 1 finished
Task 3 started
Task 2 finished
Task 4 started
Task 3 finished
Task 5 started
Task 4 finished
Task 5 finished

همانطور که مشاهده می‌کنید، دو تسک اول start شده و تا زمانی که یکی شان finish نشود، تسک دیگری start نمی‌شود.

اکنون تصور کنید که اگر نیاز داشتیم تا در تابع task از دستور return استفاده کنیم چطور می‌توانستیم خروجی های آن را بگیریم. به کد زیر توجه کنید.

from concurrent.futures import ThreadPoolExecutor
import time

def task(name):
    print(f"Task {name} started")
    time.sleep(1)
    print(f"Task {name} finished")
    return f"Result of task {name}"

with ThreadPoolExecutor(max_workers=2) as executor:
    # Submit tasks and get futures
    futures = [executor.submit(task, i) for i in [1, 2, 3, 4]]
    
    # Retrieve results from futures
    results = [future.result() for future in futures]
    
    print("Results:", results)
Please login to bookmark Close
نظرات

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

فهرست مطالب

سرفصل دوره

تمرین

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

پاسخ تمرین ها

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

اشتراک گذاری

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

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

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

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

تنظیمات

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