মাল্টি-থ্রেডিং কী?
একটি প্রোগ্রামে একসাথে একাধিক কাজ চালানোর পদ্ধতি। যেমন — একই সাথে ফাইল ডাউনলোড করা ও 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)