gpt4 book ai didi

python - 是否有任何理由使用 Python threading.local() 而不是 ContextVar(在 >= 3.7 中)

转载 作者:行者123 更新时间:2023-12-04 13:51:38 33 4
gpt4 key购买 nike

Python的thread-local data ContextVar s 似乎实现了相同的目标(虽然 API 略有不同),唯一面向用户的区别是 ContextVar s 使用异步代码(协程和 asyncio),而线程本地数据则不然。
这真的是唯一的实际区别吗?
这是否意味着任何针对运行时 >= 3.7(当引入 ContextVar 时)的代码最好使用 ContextVar过去可能到处都使用了线程本地数据?还是有理由更喜欢线程本地数据? (除了您特别希望将状态与线程而不是上下文相关联的情况。)

最佳答案

IMO 的主要问题是“略微不同的 API”实际上是巨大的差异,虽然 thread.local 易于使用,但 ContextVars 呈现出低级的痛苦(*),难以掌握和冗长的替代方案。
除此之外, ContextVars 似乎是要走的路。
我正在编写一些代码来包装 ContextVars,因此它们可以作为替代品,但尚未准备好投入生产。
(*) 好吧,“痛苦”可能太主观了,但我发誓感觉是这样,但这可能是因为我目前没有需要它的“真实世界”用例,而且我使用的人工示例太人为掌握实际用例。

关于python - 是否有任何理由使用 Python threading.local() 而不是 ContextVar(在 >= 3.7 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68856006/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com