Python 上下文变量
pythonserver side programmingprogramming更新于 2024/1/11 20:30:00
上下文变量可以根据其上下文具有不同的值。与线程本地存储(每个执行线程可能具有不同的变量值)不同,上下文变量可能在一个执行线程中具有多个上下文。这对于跟踪并发异步任务中的变量很有用。
ContextVar 类用于声明和使用上下文变量。
import contextvars name = contextvars.ContextVar("name", default = 'Hello')
当在当前上下文中找不到变量的值时,ContextVar.get() 将返回可选的默认参数。
name:变量的名称。这是一个只读属性。
ContextVar 类中定义了以下方法
get() | 返回当前上下文的上下文变量值。如果当前上下文中没有变量值,则该方法将 −
|
set() | 调用以在当前上下文中为上下文变量设置新值。 |
reset() | 将上下文变量重置为使用创建令牌的 ContextVar.set() 之前的值。 |
上下文变量模块中的 Context 类是 Context Vars 到其值的映射。
Context():创建一个没有值的空上下文。
要获取当前上下文的副本,请使用 copy_context() 函数。
run(callable, *args, **kwargs) 方法执行 callable(*args, **kwargs) 代码在上下文对象上调用 run 方法并返回执行结果。callable 对任何上下文变量所做的任何更改都将包含在上下文对象中。当从多个 OS 线程对同一上下文对象调用该方法或以递归方式调用该方法时,将引发 RuntimeError。
copy() | 返回上下文对象的浅表副本。 |
context[var] | 返回 var ContextVar 变量的值。如果未在上下文对象中设置该变量,则会引发 Key Error。 |
get() | 如果上下文对象中有值,则返回上下文 var 的值。否则,它将返回默认值。如果没有给出默认值,则返回 None。 |
iter() | 返回存储在上下文对象中的变量的迭代器。 |
len() | 返回在上下文对象中设置的变量数量。 |
keys() | 返回上下文对象中所有变量的列表。 |
values() | 返回上下文对象中所有变量值的列表。 |
items() | 返回一个包含上下文对象中的所有变量及其值的二元组列表。 |