import threading
lock = threading.Lock()
balance = 0
def deposit(amount):
global balance
with lock: # فقط یک ریسه در هر لحظه اینجاست
balance += amount
balance += amount سه قدم است (بخوان، جمع بزن، بنویس) و ریسهها وسطِ قدمهای هم میپرند — بدون قفل، افزایشها گم میشوند. GIL نجاتت نمیدهد: GIL از درهمپریدنِ بایتکدها جلوگیری میکند، نه از منطقِ چندقدمیِ تو. و قفلِ بیشتر همیشه بهتر نیست: ترتیبِ وارونهٔ دو قفل در دو ریسه = بنبست (deadlock). راهحلِ ریشهای: حالتِ مشترکِ کمتر (صف، پیام، دادهٔ محلیِ ریسه).