Wenn wir
lock = threading.RLock()
mit
lock = threading.Lock()
austauschen, kann die Funktion a() kein Lock mehr anfordern, da die Funktion ab() bereit ein Lock angefordert hat!
import threading
lock = threading.RLock()
def a():
with lock:
print("Executing a")
return "a"
def b():
with lock:
print("Executing b")
return "b"
def ab():
with lock:
first = a()
second =b()
return first, second
print(ab())
Ausgabe:
Executing a
Executing b
('a', 'b')