import threading verrou1 = threading.Lock() verrou2 = threading.Lock() def f1(): verrou1.acquire() print ("Section critique 1.1") verrou2.acquire() print ("Section critique 1.2") verrou2.release() verrou1.release() def f2(): verrou2.acquire() print ("Section critique 2.1") verrou1.acquire() print ("Section critique 2.2") verrou1.release() verrou2.release() t1 = threading.Thread(target=f1, args=[]) t2 = threading.Thread(target=f2, args=[]) t1.start () t2.start ()