Я пытаюсь управлять синхронизированными файловыми операциями, используя блокировки в качестве контекста.Тем не менее, я заканчиваю тем, что блокирую навсегда, когда одна функция вызывает другую, которая нуждается в блокировке.
Например:
from threading import Lock
lock = Lock()
def foo():
print('foo')
with lock:
print('foo-locked')
bar()
def bar():
print('bar')
with lock:
print("bar-locked") # Will not print since lock is owned by foo()
foo()
Существует ли чистый способ передачи контекста одной функции в другую?Я бы предпочел не отправлять блокировку в качестве аргумента - тогда я бы использовал контекстные менеджеры в одних функциях, а не в других.