Skip to main content

通过为 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_zlibigzip几乎完全兼容Python 标准库中的zlibgzip。有一些细微的差异,请参阅:differences-with-zlib-and-gzip-modules

快速开始

python-isal 模块可以按如下方式导入

from isal import isal_zlib
from isal import igzip
from isal import igzip_lib

isal_zlibigzip旨在用作替代品,因此它们的 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 模块的区别

  • zlibgzip中的压缩级别 0表示不压缩,而在isal_zlibigzip中,这是最低的压缩级别。这是从 ISA-L 库继承的设计选择。

  • 压缩级别范围从 0 到 3,而不是 1 到9。isal_zlib.Z_DEFAULT_COMPRESSION 已别名为isal_zlib.ISAL_DEFAULT_COMPRESSION (2)。

  • isal_zlib仅支持NO_FLUSHSYNC_FLUSHFULL_FLUSHFINISH_FLUSH。不支持其他刷新模式,并且会引发错误。

  • 出于兼容性原因, zlib.Z_DEFAULT_STRATEGYzlib.Z_RLE等被公开为 isal_zlib.Z_DEFAULT_STRATEGYisal_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.cgzip.py以使 Python 用户更容易采用它。

  • @marcelm抓住这个项目的机会,并使其成为他的xopen和扩展cutadapt项目的依赖项。这为 python-isal 提供了第一批在生产中使用 python-isal 的用户。

  • github 操作团队用于创建操作 CI 服务,该服务支持在所有三个主要操作系统上进行构建和测试。

  • @animalize用于解释如何为 ARM 64 位平台测试和构建 python-isal。

  • 最后但并非最不重要的一点是:提交错误报告或功能请求的每个人。这些使项目更好!

没有你,Python-isal 是不可能的!

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

isal-1.0.1.tar.gz (681.9 kB 查看哈希)

已上传 source

内置发行版

isal-1.0.1-pp39-pypy39_pp73-win_amd64.whl (191.0 kB 查看哈希

已上传 pp39

isal-1.0.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (240.4 kB 查看哈希

已上传 pp39

isal-1.0.1-pp38-pypy38_pp73-win_amd64.whl (191.0 kB 查看哈希

已上传 pp38

isal-1.0.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (240.4 kB 查看哈希

已上传 pp38

isal-1.0.1-pp37-pypy37_pp73-win_amd64.whl (191.0 kB 查看哈希

已上传 pp37

isal-1.0.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (240.4 kB 查看哈希

已上传 pp37

isal-1.0.1-cp310-cp310-win_amd64.whl (190.6 kB 查看哈希

已上传 cp310

isal-1.0.1-cp310-cp310-musllinux_1_1_x86_64.whl (281.7 kB 查看哈希

已上传 cp310

isal-1.0.1-cp310-cp310-musllinux_1_1_aarch64.whl (261.2 kB 查看哈希

已上传 cp310

isal-1.0.1-cp310-cp310-macosx_10_9_x86_64.whl (239.6 kB 查看哈希

已上传 cp310

isal-1.0.1-cp39-cp39-win_amd64.whl (190.6 kB 查看哈希

已上传 cp39

isal-1.0.1-cp39-cp39-musllinux_1_1_x86_64.whl (281.7 kB 查看哈希

已上传 cp39

isal-1.0.1-cp39-cp39-musllinux_1_1_aarch64.whl (261.2 kB 查看哈希

已上传 cp39

isal-1.0.1-cp39-cp39-macosx_10_9_x86_64.whl (239.6 kB 查看哈希

已上传 cp39

isal-1.0.1-cp38-cp38-win_amd64.whl (190.6 kB 查看哈希

已上传 cp38

isal-1.0.1-cp38-cp38-musllinux_1_1_x86_64.whl (281.7 kB 查看哈希

已上传 cp38

isal-1.0.1-cp38-cp38-musllinux_1_1_aarch64.whl (261.2 kB 查看哈希

已上传 cp38