Python:如果可用,则使用 epoll 的库,回退选择

标签 python select python-asyncio epoll

我想使用 select.epoll()在我的 Python 库中。

不幸的是,epoll 并非随处可用。

我需要一种回退到 select.select() 的方法.

我试图在 pypi 上找到一些东西,但没有找到匹配的包:https://pypi.python.org/pypi?%3Aaction=search&term=epoll&submit=search

我该如何解决“如果 epoll 不可用则从 epoll 回退到 select”?

最佳答案

Python 3.4 引入了 selectors module .它提供了一个 DefaultSelector,它是“当前平台上可用的最有效实现”的别名。

这是一个快速使用示例:

sel = selectors.DefaultSelector()

sel.register(fp1, selectors.EVENT_READ)
sel.register(fp2, selectors.EVENT_READ)
sel.register(fp3, selectors.EVENT_READ)

for key, mask in sel.select():
    print(key.fileobj)

您可以找到更多complete example on the Python documentation .

DefaultSelector 将按以下顺序尝试:

  • epool (Linux), kqueue (FreeBSD/NetBSD/OpenBSD/OS X) 或 /dev/poll (Solaris)<
  • 投票 (Unix)
  • 选择

关于Python:如果可用,则使用 epoll 的库,回退选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48203397/

相关文章:

object - 在 Angular2 中,对象数组的 ng-repeat 选择选项不起作用。它给出的是[Object object]而不是真实的对象

c - FreeRTOS Select TCP 套接字不可用?

python - 从并行运行的脚本更新值的最佳方法-Python

python-asyncio - 使用 Sphinx autodoc 记录 Python 协程

python - 未找到 keras 模块(没有名为 'keras' 的模块)

python - 如何将 timedelta 对象转换为 datetime 对象

python - 如何使用 python 或 WMI 设置 RAM 磁盘驱动器?

python - 包含 python 列表的类的多个实例

mysql - SQL 选择内部选择

python - 同时进行多个异步请求