Python binding for Linux AIO
Project description
[english] | [한국어 (korean)]
linux_aio_bind: Python binding for Linux Kernel AIO
A low-level python binding module that matches the Linux kernel AIO system call.
If you are not using the ctypes module to develop high-level python modules directly, but you want to use AIO functionality in python, see High-level python wrapper.
What is Linux Kernel AIO?
In summary, it allows non-blocking and asynchronous use of blocking IO operations such as read(2) and write(2).
Related documents
It is different from POSIX AIO
The POSIX AIO APIs have the aio_
prefix, but the Linux Kernel AIO has the io_
prefix.
There is already a POSIX AIO API for asynchronous I/O, but Linux implements it in glibc, a user-space library, which is supposed to use multi-threading internally. So, as you can see from the experiment, it's much worse than using the blocking IO API.
Implementation & Structure
- ctypes module is used.
- It is defined to correspond
1:1
with the C header of Linux AIO.- Implemented 100% of the functionality when using C.
- All the functions shown in the man page based on Linux man pages (4.16), and all the functions added in 4.20.3 source code, as far as I can find them.
- If you know how to use the ctypes module to operate on pointers, you can also build other types of wrappers based on this package.
- It uses
syscall
for invoking ABI and cffi for gathering different syscall number by architecture on module installation. - python stub (
pyi
files - for type hint) are included. - All error handling in the documentation (based on man-pages 4.16)
Example
Examples can be found in the code in the test directory.
Notes & Limits
- Obviously available only on Linux
- Because it is a wrapper, it brings the constraints of Linux.
- It can not be used for files used as a kernel interface. (e.g.
cgroup
) - Sometimes it works as Blocking.
- There are some things that have been solved through development after posting.
- Some features are being added because they are still under development.
- There are also some features that are not supported when the Linux version is low
- You need to check Linux man pages (4.16) and its related API documentation
- Poll is 4.19 or higher, fsync and fdsync require 4.18 or higher kernel
- It can not be used for files used as a kernel interface. (e.g.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
File details
Details for the file linux_aio_bind-1.0.0.tar.gz
.
File metadata
- Download URL: linux_aio_bind-1.0.0.tar.gz
- Upload date:
- Size: 10.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.29.1 CPython/2.7.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e9a3d9453493af58debf6e5d578316ea171052651c77b95b99ce6c96e7c6624c |
|
MD5 | 49137e63fe6aa2a19beaeeea4b369ba9 |
|
BLAKE2b-256 | 0e6cbfb5a132f97c5eb73216806639181a53949b7352f8ecb60ff5aec99c83e0 |
File details
Details for the file linux_aio_bind-1.0.0-cp37-cp37m-manylinux1_x86_64.whl
.
File metadata
- Download URL: linux_aio_bind-1.0.0-cp37-cp37m-manylinux1_x86_64.whl
- Upload date:
- Size: 16.3 kB
- Tags: CPython 3.7m
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.29.1 CPython/2.7.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c4d74d09eb5075b95dcdb0ff4b77b99ba164b2c908b7677b08003690e984cbbc |
|
MD5 | 53133cbcd29aada0c7923d41945f1427 |
|
BLAKE2b-256 | eede28bbd1aa1d50e5cd4ed250556ab39f904a34c9740fadcd5f862bea310e8c |
File details
Details for the file linux_aio_bind-1.0.0-cp37-cp37m-manylinux1_i686.whl
.
File metadata
- Download URL: linux_aio_bind-1.0.0-cp37-cp37m-manylinux1_i686.whl
- Upload date:
- Size: 16.2 kB
- Tags: CPython 3.7m
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.29.1 CPython/2.7.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 97d7875bc11b41778623a6f7cc6c54f6751b6a7094845b0ff19f4ea0366e8f68 |
|
MD5 | 4da4b334af21f4d60f1ff90a4123ffb6 |
|
BLAKE2b-256 | b19a85f30dd486542f11ffe9c16f8d21434c04de5d8a0a2cb3e7139d0581cc3b |
File details
Details for the file linux_aio_bind-1.0.0-cp36-cp36m-manylinux1_x86_64.whl
.
File metadata
- Download URL: linux_aio_bind-1.0.0-cp36-cp36m-manylinux1_x86_64.whl
- Upload date:
- Size: 16.3 kB
- Tags: CPython 3.6m
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.29.1 CPython/2.7.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 21075c295dacb4d8a830e45c592050fb15faa598f0c9c54ef863129f802a66a2 |
|
MD5 | ca024233f8e42af172d07ada2ef64036 |
|
BLAKE2b-256 | 1b8cbe149fe6503720497a43aafbdb60b1b52af5aeb885c590323828d5c4f282 |
File details
Details for the file linux_aio_bind-1.0.0-cp36-cp36m-manylinux1_i686.whl
.
File metadata
- Download URL: linux_aio_bind-1.0.0-cp36-cp36m-manylinux1_i686.whl
- Upload date:
- Size: 16.2 kB
- Tags: CPython 3.6m
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.29.1 CPython/2.7.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 666aa7d52fc7c73c5e24fc14fae56a9134861c7333fe6d7865c742be9ec43453 |
|
MD5 | df6d5a2acb5130fcf35e09e87751cee5 |
|
BLAKE2b-256 | 8a1031f1e80b51e168eae82c5b4229ee6909443a01490a7eb6f0d71af091862b |
File details
Details for the file linux_aio_bind-1.0.0-cp35-cp35m-manylinux1_x86_64.whl
.
File metadata
- Download URL: linux_aio_bind-1.0.0-cp35-cp35m-manylinux1_x86_64.whl
- Upload date:
- Size: 16.3 kB
- Tags: CPython 3.5m
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.29.1 CPython/2.7.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bfcb5891f1d344da1c84e271a7994d8317bb315e56bb7f33318df479d3aedabe |
|
MD5 | eb28eabe9db8ec81f910be9e5ecc791f |
|
BLAKE2b-256 | ba39db6e9f6395ddfa71bd10d63cff3671c5cb74b19ce72abcb09a6952869a45 |
File details
Details for the file linux_aio_bind-1.0.0-cp35-cp35m-manylinux1_i686.whl
.
File metadata
- Download URL: linux_aio_bind-1.0.0-cp35-cp35m-manylinux1_i686.whl
- Upload date:
- Size: 16.2 kB
- Tags: CPython 3.5m
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.29.1 CPython/2.7.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b9abd070ca2faa96e05e5412ccd5df1488a3fafab67b883ad315a3e3c8cc3a7e |
|
MD5 | a1b92371776325fc61a82e3eef272773 |
|
BLAKE2b-256 | e90622e010f820dc90a8323743485a364f0ecd4053c78e35ba5ce4cc51f1de0b |
File details
Details for the file linux_aio_bind-1.0.0-cp34-cp34m-manylinux1_x86_64.whl
.
File metadata
- Download URL: linux_aio_bind-1.0.0-cp34-cp34m-manylinux1_x86_64.whl
- Upload date:
- Size: 16.3 kB
- Tags: CPython 3.4m
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.29.1 CPython/2.7.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bfeb269314ac736dc35d064cad635d292e79285c71b8dcefb1dce50a83cb6056 |
|
MD5 | 427000365c782b9ecc51e25ed9f92d9b |
|
BLAKE2b-256 | 3b024d3d2f8cfaab73239c9224384f40924c2f2d0e126e9f5d5096fee711df74 |
File details
Details for the file linux_aio_bind-1.0.0-cp34-cp34m-manylinux1_i686.whl
.
File metadata
- Download URL: linux_aio_bind-1.0.0-cp34-cp34m-manylinux1_i686.whl
- Upload date:
- Size: 16.2 kB
- Tags: CPython 3.4m
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.29.1 CPython/2.7.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e76dbf6c3988f418b277cb94906e3c74a2f13cee187c2f85050f9a9d2ff7b7cc |
|
MD5 | cd5402e609f4f2ae5e3d45318ca6414e |
|
BLAKE2b-256 | adf0533bb803f629c0e4aaf4689725b1b8f2524ab17490570665f061b8c44e12 |
File details
Details for the file linux_aio_bind-1.0.0-cp27-cp27m-manylinux1_x86_64.whl
.
File metadata
- Download URL: linux_aio_bind-1.0.0-cp27-cp27m-manylinux1_x86_64.whl
- Upload date:
- Size: 18.9 kB
- Tags: CPython 2.7m
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.29.1 CPython/2.7.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 895763eb854bb07815ab3d28e01a252421de36dbda0931f172d1707d0f0eaf0b |
|
MD5 | 6bdeeeab31e581f9af0f2066a864d6b6 |
|
BLAKE2b-256 | 359388ebd0e3d171ab30a9da592ec8289d806656245b0a5962e2196f71feef48 |
File details
Details for the file linux_aio_bind-1.0.0-cp27-cp27m-manylinux1_i686.whl
.
File metadata
- Download URL: linux_aio_bind-1.0.0-cp27-cp27m-manylinux1_i686.whl
- Upload date:
- Size: 18.7 kB
- Tags: CPython 2.7m
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.29.1 CPython/2.7.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 417a570df02cad9c0b8301aaf60123b244b50096eec2640290c8853c75f7218d |
|
MD5 | 1af14f042100bfcf2e2acf599a54259a |
|
BLAKE2b-256 | 8c462345746388aed8c805324bb2d3b5527e70a0f129b90ccc870d139d29f7ab |