Multithreading ও Multiprocessing

🧵 Python Multithreading ও ⚙️ Multiprocessing (সম্পূর্ণ গাইড)

Python-এ একসাথে একাধিক কাজ (task) চালানোর জন্য মূলত দুইটি পদ্ধতি ব্যবহার করা হয়: Multithreading এবং Multiprocessing। এই দুইটি কনসেপ্ট ভালোভাবে বুঝলে আপনি অনেক দ্রুত, দক্ষ এবং স্কেলেবল প্রোগ্রাম লিখতে পারবেন।

🧵 Multithreading কী?

Multithreading মানে হলো একটি প্রোগ্রামের ভিতরে একাধিক thread ব্যবহার করে একসাথে অনেকগুলো কাজ করা। সব thread একই memory share করে।

✔ Multithreading কবে ব্যবহার করবেন?

  • I/O based task (file, API, database)
  • Network request
  • Waiting টাইপ কাজ

🔹 Multithreading Example

import threading
import time

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

t1 = threading.Thread(target=task, args=("A",))
t2 = threading.Thread(target=task, args=("B",))

t1.start()
t2.start()

t1.join()
t2.join()

print("All tasks completed")
  

Output (সম্ভাব্য):
Task A started Task B started Task A finished Task B finished All tasks completed

👉 এখানে দুটি thread একসাথে শুরু হচ্ছে, তাই মোট সময় কম লাগে।

⚠️ Python GIL (Global Interpreter Lock)

Python-এ GIL থাকার কারণে একসাথে একাধিক thread CPU-intensive কাজ করতে পারে না। তাই CPU-heavy কাজের জন্য Multithreading ভালো না।

⚙️ Multiprocessing কী?

Multiprocessing এ প্রতিটি process আলাদা memory ব্যবহার করে এবং আলাদা CPU core-এ রান করতে পারে। এতে GIL এর সমস্যা থাকে না।

✔ Multiprocessing কবে ব্যবহার করবেন?

  • CPU-intensive task
  • Heavy calculation
  • Image / video processing
  • Machine Learning task

🔹 Multiprocessing Example

import multiprocessing
import time

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

if __name__ == "__main__":
    p1 = multiprocessing.Process(target=task, args=("A",))
    p2 = multiprocessing.Process(target=task, args=("B",))

    p1.start()
    p2.start()

    p1.join()
    p2.join()

    print("All processes completed")
  

Output:
Process A started Process B started Process A finished Process B finished All processes completed

👉 এখানে প্রতিটি process আলাদা CPU core ব্যবহার করতে পারে।

🔍 Multithreading vs Multiprocessing

বিষয় Multithreading Multiprocessing
Memory Shared Separate
CPU Usage Single core (GIL) Multiple core
Speed I/O task এ ভালো CPU task এ ভালো
Complexity কম বেশি

✅ সংক্ষেপে মনে রাখুন

  • I/O কাজ → Multithreading
  • Heavy calculation → Multiprocessing
  • GIL CPU task-এ বাধা দেয়
  • Performance বাড়াতে সঠিক টেকনিক বেছে নিন

🎯 এই কনসেপ্টগুলো জানলে আপনি প্রফেশনাল Python Developer হিসেবে আরও শক্তিশালী হবেন।

👼 Quiz
/

লোড হচ্ছে...

Interview Questions:

1. Python এ Multithreading কী?

Multithreading হলো একই প্রসেসের মধ্যে একাধিক থ্রেড ব্যবহার করে একাধিক কাজ একসাথে চালানোর পদ্ধতি।

2. GIL কী এবং এটি কেন গুরুত্বপূর্ণ?

GIL (Global Interpreter Lock) একসাথে একাধিক থ্রেডকে Python bytecode এক্সিকিউশন থেকে বাধা দেয়, ফলে CPU-bound কাজ ধীর হয়।

3. Multiprocessing কেন Multithreading এর চেয়ে ভালো?

Multiprocessing একাধিক CPU core ব্যবহার করতে পারে, তাই এটি CPU-bound টাস্কে বেশি পারফরম্যান্স দেয়।