gevent.contextvars -- Cooperative contextvars#

合作社 contextvars 模块。

这个模块被添加到python3.7中。gevent版本可用于所有受支持的Python版本。但是,请参见有关gevent 20.9的重要说明。

上下文变量就像greenlet局部变量,只是使用起来更不方便。它们被设计来克服 asyncio 基于greenlet的代码很少需要。

主要区别在于,可以获取给定greenlet中所有上下文变量状态的快照,然后恢复以供执行;对上下文变量的修改“范围”取决于特定上下文处于活动状态的持续时间。(这种状态恢复支持对greenlet很少有用,因为它不是总是在一个线程中按顺序运行“任务”,比如 asyncio 是的,基于greenlet的代码通常生成新的greenlet来处理每个任务。)

gevent实现基于 PEP 567 也没有太多的优化。尤其是,设置上下文值不是固定时间。

在 1.5a3 版本加入.

在 20.9.0 版本发生变更: 在python3.7及更高版本上,这个模块不再是monkey补丁来代替标准库版本。gevent依赖于greenlet 0.4.17,其中包括对上下文变量的支持。这意味着任意数量的greenlet可以运行任意数量的异步任务,每个任务都有自己的上下文变量。此模块只支持greenlet,不支持asyncio任务,因此不建议在python3.7及更高版本上使用它。

在Python的早期版本中,这个模块仍然是一个用于后端口代码的解决方案。如果您希望以严格的greenlet本地方式使用contextvar API,也可以使用它。

class Context[源代码]#

基类:Mapping

执行 contextvars.Context

创建空上下文。

copy()[源代码]#

返回一个浅拷贝。

class ContextVar(name, default=<default value>)[源代码]#

基类:object

执行 contextvars.ContextVar .

class Token(context, var, old_value)[源代码]#

基类:object

的不透明实现 contextvars.Token .

property old_value#

设置为变量之前的值的只读属性 set() 打电话,或打给 MISSING 如果之前没有设置变量。

property var#

指向创建标记的变量的只读属性

copy_context()[源代码]#

返回当前上下文的浅副本。