Python: Как создать менеджер контекста для безопасного одновременного входа, который отличается в каждом контексте
Я хочу иметь объект conManager
это экземпляр диспетчера контекста с повторным входом, так что всякий раз, когда я вхожу и выхожу из его контекста, он печатает число, но число должно быть на единицу больше, чем номер предыдущего контекста (начиная с 0).
Пример:
with conManager:
print("Afirst")
with conManager:
print("Asecond")
with conManager:
print("third")
print("Bsecond")
print("Bfirst")
Ожидаемый выход:
0
Afirst
1
Asecond
2
third
2
Bsecond
1
Bfirst
0
Единственное решение, которое у меня есть, - это класс со стеком, но он не безопасен одновременно. Есть ли одновременно безопасные решения?
РЕДАКТИРОВАТЬ: как указал Сроу, я сказал, что потокобезопасный, когда я имел в виду одновременную безопасность, изменил вопрос соответственно.
1 ответ
Единственное решение, которое я могу придумать, это переопределение conManager
__call__, так что он возвращает менеджер контекста, но я бы предпочел более чистое использование без вызова.