异步的glib事件循环集成
asyncio-glib的Python项目详细描述
异步的glib事件循环集成
此模块提供python 3asyncio事件循环实现 利用了GLib event loop。这允许混合。 在同一线程中使用异步和一些基于glib的代码。
启用此事件循环可以通过以下代码实现:
import asyncio
import asyncio_glib
asyncio.set_event_loop_policy(asyncio_glib.GLibEventLoopPolicy())
此时,asyncio.get_event_loop()
将返回一个GLibEventLoop
。
实施策略
为了便于维护,我已经尝试了重复使用
库异步代码尽可能多。为此,我创造了一个
实现^{
为了测试事件循环的功能,我重用了 针对新选择器和事件运行的标准库测试套件 循环。
目前选择器将私有
selectors._BaseSelectorImpl
类,它是
未来的兼容性问题。如果是这样的话,拿一份本地的
是一种选择。
与gbulb比较
Gbulb是异步事件循环的另一个实现 油嘴滑舌。主要区别是:
gbulb直接从glib main发送异步回调 循环。相反,asyncio glib迭代glib主循环,直到 异步事件已准备就绪,然后具有异步事件循环调度 事件。
gbulb有一些windows兼容代码,而asyncio glib有 在那个平台上没有测试。
asyncio glib本质上是一个未修改的
SelectorEventLoop
,因此 应该会自动从新的python版本中获得任何特性。
asyncio glib代码库的大小也是gbulb的十分之一。