通过为 ISA-L 库提供 python 绑定来加快 zlib 和 gzip 兼容的压缩和解压缩。
项目描述
python-isal
通过为 ISA-L 库提供 Python 绑定,加快与 zlib 和 gzip 兼容的压缩和解压缩。
此包为ISA-L库提供 Python 绑定。英特尔(R) 智能存储加速库 (ISA-L) 以汇编语言实现了几个关键算法。这包括提供与 zlib/gzip 兼容的压缩的各种功能。
python-isal通过提供三个模块来提供绑定:
isal_zlib:使用 ISA-L 加速其性能的 zlib 模块的直接替代品。
igzip:gzip 模块的替代品,它使用isal_zlib 而不是zlib来执行其压缩和校验和任务,从而提高了性能。
igzip_lib:提供可以完全访问 ISA-L 压缩函数 API 的压缩函数。
isal_zlib和igzip几乎完全兼容Python 标准库中的zlib和 gzip。有一些细微的差异,请参阅:differences-with-zlib-and-gzip-modules。
快速开始
python-isal 模块可以按如下方式导入
from isal import isal_zlib
from isal import igzip
from isal import igzip_lib
isal_zlib和igzip旨在用作替代品,因此它们的 api 和功能与 stdlib 的模块相同。除非 ISA-L 不支持与 zlib 相同的调用(请参阅下面的差异)。
完整的 API 文档可以在我们的 readthedocs 页面上找到。
python -m isal.igzip实现了一个简单的类似 gzip 的命令行应用程序(就像python -m gzip一样)。完整的使用文档可以在我们的 readthedocs 页面上找到。
安装
使用 pip:pip install isal
使用 conda: conda install python-isal
Linux、Windows 和 MacOS 支持安装。有关更高级的安装选项,请查看文档。
python-isal 作为项目中的依赖项
Python-isal 支持有限数量的可使用轮子的平台。为了防止您的用户在安装项目时遇到问题,请列出一个 python-isal 依赖项,如下所示。
设置.cfg:
install_requires = isal; platform.machine == "x86_64" or platform.machine == "AMD64"
设置.py:
extras_require={ ":platform.machine == 'x86_64' or platform.machine == 'AMD64'": ['isal'] },
zlib 和 gzip 模块的区别
zlib和gzip中的压缩级别 0表示不压缩,而在isal_zlib和igzip中,这是最低的压缩级别。这是从 ISA-L 库继承的设计选择。
压缩级别范围从 0 到 3,而不是 1 到9。isal_zlib.Z_DEFAULT_COMPRESSION 已别名为isal_zlib.ISAL_DEFAULT_COMPRESSION (2)。
isal_zlib仅支持NO_FLUSH、SYNC_FLUSH、FULL_FLUSH和 FINISH_FLUSH。不支持其他刷新模式,并且会引发错误。
出于兼容性原因, zlib.Z_DEFAULT_STRATEGY、zlib.Z_RLE等被公开为 isal_zlib.Z_DEFAULT_STRATEGY、isal_zlib.Z_RLE等。但是isal_zlib只支持默认策略,使用其他策略时会给出警告。
zlib支持从 1 到 9 的不同内存级别(默认为 8)。 isal_zlib支持最小、小、中、大和最大的内存级别。这些已映射到级别 1、2-3、4-6、7-8 和 9。因此 isal_zlib可以与 zlib 兼容的内存级别一起使用。
igzip.open返回一个类IGzipFile而不是GzipFile。由于压缩级别不兼容,因此选择了不同的命名来反映这一点。出于兼容性原因, igzip.GzipFile确实作为 igzip.IGzipFile 的别名存在 。
贡献
如果您觉得有什么可以改进的,请提出 PR 或问题。错误报告也非常受欢迎。请在github 问题跟踪器上报告它们。
致谢
该项目建立在许多人的软件和经验之上。非常感谢:
制作 ISA-L的ISA-L 贡献者。特别感谢@gbtucker 总是特别乐于助人和反应迅速。
Cython贡献者使创建扩展变得容易并帮助新手开始使用指针地址。
CPython贡献者。Python-isal 模仿标准库中的zlibmodule.c和gzip.py以使 Python 用户更容易采用它。
@marcelm抓住这个项目的机会,并使其成为他的xopen和扩展cutadapt项目的依赖项。这为 python-isal 提供了第一批在生产中使用 python-isal 的用户。
github 操作团队用于创建操作 CI 服务,该服务支持在所有三个主要操作系统上进行构建和测试。
@animalize用于解释如何为 ARM 64 位平台测试和构建 python-isal。
最后但并非最不重要的一点是:提交错误报告或功能请求的每个人。这些使项目更好!
没有你,Python-isal 是不可能的!
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。