contextvars:获取和设置原子



在文档中我没有找到任何关于update的内容。

我需要有以下原子:

context_metadata = contextvars.ContextVar("context_logger_metadata")
my_dict = context_metadata.get()
my_dict['appended'] = 'some_data'
context_metadata.set(my_dict)

python提供类似同步块的东西吗?我如何确保GIL不会在get和set之间切换上下文?

如注释所述:在异步程序中,上下文切换只在开发人员控制下的显式点发生:调用没有await,没有上下文切换。在示例代码中,您的"读取"、"更改"、"设置"顺序将不中断地进行。

我希望你记住上下文变量在获取或设置它们的内容时不会复制对象:也就是说,你用get检索的字典是与context_var值相同的对象:当你更新其中的键时,没有必要将值设置回上下文变量:字典已经更新了。

如果你的代码使用线程,或者将线程与异步代码结合,那么,在原子操作周围使用传统的threading.Lock将会工作。

相关内容

  • 没有找到相关文章

最新更新