মাল্টি-থ্রেডিং (Multi-threading)

লেসন ৪৮ / ৫১

মাল্টি-থ্রেডিং কী?

একটি প্রোগ্রামে একসাথে একাধিক কাজ চালানোর পদ্ধতি। যেমন — একই সাথে ফাইল ডাউনলোড করা ও UI দেখানো।

threading Module

import threading
import time

def task(name, seconds):
    print(f"{name} শুরু হলো...")
    time.sleep(seconds)
    print(f"{name} শেষ! ({seconds} সেকেন্ড)")

# দুটি Thread তৈরি
t1 = threading.Thread(target=task, args=("ডাউনলোড", 3))
t2 = threading.Thread(target=task, args=("প্রসেসিং", 2))

t1.start()  # Thread 1 শুরু
t2.start()  # Thread 2 শুরু (একসাথে!)

t1.join()   # Thread 1 শেষ হওয়ার জন্য অপেক্ষা
t2.join()   # Thread 2 শেষ হওয়ার জন্য অপেক্ষা

print("সব কাজ শেষ!")

⚠️ GIL (Global Interpreter Lock)

পাইথনে GIL থাকায় CPU-bound কাজে threading তেমন কার্যকর নয়। সেক্ষেত্রে multiprocessing ব্যবহার করুন।

from concurrent.futures import ThreadPoolExecutor

def download(url):
    print(f"Downloading {url}...")
    time.sleep(1)
    return f"{url} done"

urls = ["file1", "file2", "file3", "file4"]

with ThreadPoolExecutor(max_workers=4) as executor:
    results = executor.map(download, urls)
    for r in results:
        print(r)