GLib事件循环集成于asyncio
项目描述
GLib事件循环集成于asyncio
此模块提供Python 3 asyncio事件循环实现,利用GLib事件循环。这允许在同一个线程中混合asyncio和某些基于GLib的代码。
启用此事件循环可以通过以下代码实现
import asyncio
import asyncio_glib
asyncio.set_event_loop_policy(asyncio_glib.GLibEventLoopPolicy())
在此点,asyncio.get_event_loop()
将返回一个GLibEventLoop
。
实现策略
为了简化维护,我尽量重用标准库asyncio代码尽可能多的部分。为此,我创建了一个GLib实现selectors.BaseSelector
API。结合现有的asyncio.SelectorEventLoop
类,我们就有了事件循环实现。
为了测试事件循环是否功能正常,我重用了标准库测试套件的部分来针对新的选择器和事件循环运行。
目前选择器是私有selectors._BaseSelectorImpl
类的子类,这可能是未来兼容性问题的潜在来源。如果发生这种情况,保留该代码的本地副本是一个选项。
与Gbulb的比较
Gbulb是另一个基于GLib的asyncio事件循环实现。主要区别在于
-
Gbulb直接从GLib主循环中调度asyncio回调。相比之下,asyncio-glib迭代GLib主循环,直到asyncio事件就绪,然后由asyncio事件循环调度事件。
-
Gbulb有一些Windows兼容性代码,而asyncio-glib在该平台上没有进行测试。
-
asyncio-glib是基本未修改的
SelectorEventLoop
,因此应该能够自动获得Python新版本的所有新功能。
asyncio-glib代码库的大小大约是Gbulb的十分之一。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
asyncio-glib-0.1.tar.gz (13.3 kB 查看哈希)
构建分布
asyncio_glib-0.1-py3-none-any.whl (13.9 kB 查看哈希)
关闭
asyncio-glib-0.1.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fe3ceb2ba5f541330c07ca1bd7ae792468d625bad1acf5354a3a7a0b9fd87521 |
|
MD5 | 60153055e76ceaacdfbaeafb03d61dd9 |
|
BLAKE2b-256 | 241c83477e079cfcfb9cedbfbc905d72fee79604b35eec2a1b749eb9f0181733 |
关闭
asyncio_glib-0.1-py3-none-any.whl的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cae91a7b5f694927b04b452892c4ad2ec5296ab0d2462587a7d317bdf45ee9b7 |
|
MD5 | d40ab1dd931e554af06a032c3c6ef467 |
|
BLAKE2b-256 | 90ca60ae11d48c276a5109953b056e78586aecfc7f1fa943ca5f934242bb649f |