上下文变量对象 — Python 文档
来自菜鸟教程
Python/docs/3.8/c-api/contextvars
上下文变量对象
在 3.7.1 版中更改:
笔记
在 Python 3.7.1 中,所有上下文变量 C API 的签名都 更改 以使用 PyObject 指针而不是 PyContext、PyContextVar 和PyContextToken,例如:
// in 3.7.0:
PyContext *PyContext_New(void);
// in 3.7.1+:
PyObject *PyContext_New(void);
有关更多详细信息,请参阅 :issue:`34762`。
3.7 版中的新功能。
本节详细介绍了 contextvars 模块的公共 C API。
- type PyContext
- 用于表示 contextvars.Context 对象的 C 结构。
- type PyContextVar
- 用于表示 contextvars.ContextVar 对象的 C 结构。
- type PyContextToken
- 用于表示 contextvars.Token 对象的 C 结构。
- PyTypeObject PyContext_Type
- 表示 context 类型的类型对象。
- PyTypeObject PyContextVar_Type
- 表示 上下文变量 类型的类型对象。
- PyTypeObject PyContextToken_Type
- 表示 上下文变量 token 类型的类型对象。
类型检查宏:
- int PyContext_CheckExact(PyObject *o)
- 如果 o 的类型为 PyContext_Type,则返回 true。 o 不得为
NULL
。 此功能总是成功。
- int PyContextVar_CheckExact(PyObject *o)
- 如果 o 的类型为 PyContextVar_Type,则返回 true。 o 不得为
NULL
。 此功能总是成功。
- int PyContextToken_CheckExact(PyObject *o)
- 如果 o 的类型为 PyContextToken_Type,则返回 true。 o 不得为
NULL
。 此功能总是成功。
上下文对象管理功能:
- PyObject *PyContext_New(void)
- 创建一个新的空上下文对象。 如果发生错误,则返回
NULL
。
- 创建传递的 ctx 上下文对象的浅表副本。 如果发生错误,则返回
NULL
。
- PyObject *PyContext_CopyCurrent(void)
- 创建当前线程上下文的浅表副本。 如果发生错误,则返回
NULL
。
- int PyContext_Enter(PyObject *ctx)
- 将 ctx 设置为当前线程的当前上下文。 成功时返回
0
,错误时返回-1
。
- int PyContext_Exit(PyObject *ctx)
- 停用 ctx 上下文并将先前的上下文恢复为当前线程的当前上下文。 成功时返回
0
,错误时返回-1
。
- int PyContext_ClearFreeList()
- 清除上下文变量空闲列表。 返回已释放项目的总数。 此功能总是成功。
上下文变量函数:
- 创建一个新的
ContextVar
对象。 name 参数用于内省和调试目的。 def 参数指定上下文变量的默认值,或NULL
为无默认值。 如果发生错误,该函数返回NULL
。
- int PyContextVar_Get(PyObject *var, PyObject *default_value, PyObject **value)
获取上下文变量的值。 如果在查找期间发生错误,则返回
-1
,如果未发生错误,则返回0
,无论是否找到值。如果找到上下文变量,value 将是一个指向它的指针。 如果上下文变量是 not 找到,value 将指向:
default_value,如果不是
NULL
;var的默认值,如果不是
NULL
;NULL
除了
NULL
,该函数返回一个新的引用。
- 在当前上下文中将 var 的值设置为 value。 返回此更改的新令牌对象,如果发生错误,则返回
NULL
。
- 将 var 上下文变量的状态重置为它在返回 令牌 的 PyContextVar_Set() 之前的状态。 此函数在成功时返回
0
,在错误时返回-1
。