Я хочу иметь объект 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
Единственное решение, которое у меня есть до сих пор, - это класс со стеком в нем, но это не является параллельным. Существуют ли параллельные безопасные решения?
РЕДАКТИРОВАТЬ: как указал Сроу, я сказал потокобезопасный, когда имел в виду параллельный безопасный, соответственно изменил вопрос.
int
и большинство базовых объектов являются потокобезопасными, включая методыappend
иpop
изlist
. - person Sraw   schedule 14.12.2017list
с его методамиappend
иpop
для имитации стека. Не волнуйтесь, они потокобезопасны. ссылка: docs.python.org/3/tutorial/ - person Sraw   schedule 14.12.2017conManager
существует контекст в асинхронном режиме, он может извлечь значение, оставленное другой сопрограммой, что сделает его небезопасным, поскольку нет гарантии, что первый оставшийся контекст является последним введенным. - person bentheiii   schedule 14.12.2017