Python asyncio文档翻译---事件环规则:通用的消息循环EventLoop的get,set方法

初学,理解不深,翻译不够好见谅。

事件环规则:通用的事件环get,set方法


    事件环管理被事件环规则控制,事件环是一个全局(对于每个进程而言)对象。它有默认规则,以及可以改变规则的应用程序接口。一个规则定义了上下文的概念,一个规则管理每个上下文内的分事件环。默认规则的上下文概念被定义为最近的线程。
    现有的平台或编程框架会改变默认规则以满足平台或框架用户的需要。比如平台或框架必须将他们的规则用文件证明并且在设置他们自定义规则的初始序列时提供文件证明,为了避免在复杂的框架复写默认规则时出现不确定的行为。
    获得当前上下文的事件环,使用get_event_loop()。它返回一个实现了下面指定的接口的事件环对象,或者抛出异常防止当前上下文没有设定事件环以及当前规则没有被指定去生成一个事件环。它不应该返回None。
    为当前上下文设定事件环,使用set_event_loop(event_loop),event_loop是一个事件环对象,也就是一个AbstractEventLoop的实例化对象,或者None。允许设定当前事件环为None,但之后get_event_loop()时会抛出异常。这对测试代码不依赖一个存在的事件环是有用的。
    我们期望get_event_loop()返回一个依赖于上下文(事实上,上下文定义也是这样)的特殊的事件环。它将创建一个新的事件环对象如果设置了None,同时创建是被规定所允许的。。默认规则会在主线程中创建一个新的事件环(就像在threading.py中定义的,它使用一个专为主线程设计的特殊的子类),只有get_event_loop()在set_event_loop()前被调用时。其他规则会有不同的表现。默认规则创造的事件环很懒,也就是说,如果需要的话第一次调用get_event_loop()创建一个事件环示例,并且使用当前规则说明。
    得益于单元测试和其他特殊情况,于是出现了一个第三方规则函数:new_event_loop(),它创造并且按照规则的默认约束返回一个新的事件环对象。想要实现这样的事件环,你必须用set_event_loop()召唤它。
    若要改变事件环规则,召唤set_event_loop_policy(policy),参数policy是一个事件环规则或者None。如果是空,规则对象必须是定义方法get_event_loop()的AbstractEventLoopPolicy的一个实例,set_event_loop(loop) and new_event_loop(),所有行为都要像上面这样声明。
    向一个规则传递空值将恢复事件环规则为默认(平台或框架重新定义默认设置)。默认事件环规则是 DefaultEventLoopPolicy类的一个实例。当前的事件环规则对象会在召唤get_event_loop_policy()时被恢复。
    TBD: decribe child watchers and UNIX quirks for subprocess processing.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值