linux aio的python绑定
linux-aio-bind的Python项目详细描述
[英语][한국어 (korean)]
linux-aio-bind:python绑定用于Linux Kernel AIO
与linux内核aio系统调用匹配的低级python绑定模块。
如果您没有使用ctypes module直接开发高级python模块,但是您希望在python中使用aio功能,请参见High-level python wrapper。
什么是linux内核aio?
总之,它允许非阻塞和异步使用阻塞io操作,如read(2)和write(2)。
相关文件
它不同于POSIX AIO
posix aio api有aio_
前缀,而linux内核aio有io_
前缀。
已经有一个用于异步i/o的posix aio api,但是linux在glibc(一个用户空间库)中实现它,glibc应该在内部使用多线程。 因此,正如您从the experiment中看到的,这比使用阻塞io api要糟糕得多。
实施和结构
- ^使用{a20}。
- 它被定义为与linux aio的c头相对应。
- 使用C时实现了100%的功能。
- 手册页中基于Linux man pages (4.16)显示的所有函数,以及4.20.3 source code中添加的所有函数,只要我能找到它们。
- 如果知道如何使用ctypes module对指针进行操作,还可以基于此包构建其他类型的包装器。
- 它使用
syscall
来调用abi,使用cffi来收集模块安装时的different syscall number by architecture。 - ^包含{a28}(
pyi
文件-用于类型提示)。 - 文档中的所有错误处理(基于手册第4.16页)
示例
示例可以在test directory中的代码中找到。
注释和限制
- 显然只有在Linux上才可用
- 因为它是一个包装器,所以带来了linux的限制。
- 它不能用于用作内核接口的文件。(例如
cgroup
) - Sometimes it works as Blocking.
- 有一些事情已经解决后,通过发展张贴。
- 一些功能正在添加,因为它们仍在开发中。
- 当Linux版本较低时,也有一些功能不受支持
- 您需要检查Linux man pages (4.16)及其相关的api文档
- 轮询为4.19或更高,fsync和fdsync需要4.18或更高的内核
- 它不能用于用作内核接口的文件。(例如