我希望有一个对象conManager
,这是一个reentrant context manager实例,每当我进入和退出其上下文时,它都会打印一个数字,但该数字必须比一个数字高一个。 previus上下文(从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
到目前为止,我唯一的解决方案是一个包含堆栈的类,但这不是并发安全的。有没有并发安全的解决方案?
编辑:正如Sraw指出的那样,当我指的是并发安全时,我说线程安全,相应地改变了问题。答案 0 :(得分:0)
我能想到的唯一解决方案是覆盖conManager
的__call__,以便它返回一个上下文管理器,但我宁愿有一个更清洁,没有 - 呼叫使用。