কম্পিউটার টিউটোরিয়াল

পাইথন ডিকশনারি কি থ্রেড-সেফ (Thread-Safe)

হ্যাঁ, পাইথন ডিকশনারি থ্রেড-সেফ (Thread-Safe)। আসলে পাইথনের সব বিল্ট-ইন ডেটা টাইপ থ্রেড-সেফ।

কারণ: GIL (Global Interpreter Lock)

CPython-এ GIL নিশ্চিত করে যে একবারে শুধু এক থ্রেড পাইথন বাইটকোড এক্সিকিউট করতে পারে। এটাই বিল্ট-ইন অপারেশনগুলো আটোমিক (atomic) করে তোলে।

কী অপারেশন আটোমিক

  • একটি আইটেম আপডেট: d[key] = value
  • একটি আইটেম রিড: d[key]
  • d.get(key), d.pop(key), del d[key]

সতর্কতা: কম্পাউন্ড অপারেশন নন-আটোমিক

# এটি থ্রেড-সেফ নয়!
if key not in d:
    d[key] = compute_value()  # Race condition সম্ভব

# সেফ: লক ব্যবহার করুন
import threading
lock = threading.Lock()
with lock:
    if key not in d:
        d[key] = compute_value()

রেফারেন্স

Python Docs: Global Interpreter Lock

  1. পাইথন ডিকশনারি মেমরি ইউজেজ ব্যাখ্যা

  2. পাইথন ডিকশনারি কি থ্রেড-সেফ (Thread-Safe)

  3. গারবেজ কলেক্টর কী সকল পাইথন অবজেক্ট ট্র্যাক করতে পারে?

  4. পাইথনে টাপল ইম্মুটেবল (immutable) কেন?