Python 3.14 中的 Zstandard 压缩:为何这对开发者至关重要
Python 3.14 即将发布,其中包含多项开创性变革,例如移除 GIL以及引入 模板字符串等突破性变革。
但有一个小而实用的改进尚未引起足够关注:标准库中新增了compression.zstd
模块。
对 Zstandard 压缩算法的内置支持可能不会引起轰动,但对于处理大量数据、实时系统或高效存储管道的开发者而言,这是一项有意义的升级。
基本上,Zstandard是由Meta开发的一种快速压缩算法。它旨在提供速度与压缩率之间的良好平衡,因此成为实时压缩和大规模数据处理的热门选择。

其主要优势包括:
- 高压缩率
- 显著更快的压缩与解压缩速度
- 可调节的压缩级别及流式处理支持
Python 3.14 的 compression.zstd
模块将提供简洁的 API,用于使用该算法压缩和解压缩二进制数据……
以下是在 Python 3.14.0rc1 中使用它的简单示例:
from compression import zstd
import math
data = str(math.pi).encode() * 20
compressed = zstd.compress(data)
ratio = len(compressed) / len(data)
print(f"Achieved compression ratio of {ratio:.4f}")
# Achieved compression ratio of 0.1000
与其他内置压缩模块的比较
空谈无益,让我们通过快速基准测试将 zstd
与 Python 3.14 中的其他内置压缩算法进行比较:
import time
import math
import zlib
import gzip
import bz2
import lzma
from compression import zstd
# Generate some compressible data
data = (str(math.pi).encode() * 10_000)
# Compression functions
def compress_with_zlib(data):
return zlib.compress(data)
def compress_with_gzip(data):
return gzip.compress(data)
def compress_with_bz2(data):
return bz2.compress(data)
def compress_with_lzma(data):
return lzma.compress(data)
def compress_with_zstd(data):
return zstd.compress(data)
# Benchmarking function
def benchmark(name, func, data):
start = time.perf_counter()
compressed = func(data)
end = time.perf_counter()
ratio = len(compressed) / len(data)
elapsed = (end - start) * 1000 #covert seconds to milliseconds
return name, ratio, elapsed
results = []
results.append(benchmark("zlib", compress_with_zlib, data))
results.append(benchmark("gzip", compress_with_gzip, data))
results.append(benchmark("bz2", compress_with_bz2, data))
results.append(benchmark("lzma", compress_with_lzma, data))
results.append(benchmark("zstd", compress_with_zstd, data))
print(f"{'Algorithm':<8} | {'Ratio':<10} | {'Time (ms)':<10}")
print("-" * 35)
for name, ratio, time_ms in results:
print(f"{name:<8} | {ratio:<10.4f} | {time_ms:<10.2f}")
上述代码对同一样本数据集应用了包括 zlib
、gzip
、bz2
、lzma
和 zstd
在内的不同算法,并记录了压缩率和时间成本。
我的执行结果为:
Algorithm | Ratio | Time (ms)
-----------------------------------
zlib | 0.0026 | 0.39
gzip | 0.0027 | 0.41
bz2 | 0.0005 | 17.03
lzma | 0.0010 | 20.64
zstd | 0.0003 | 0.14
这一结果胜过千言万语。Zstandard 实现了最小的文件大小和最快的压缩速度。Python 将其纳入标准库是理所当然的。
为什么这很重要
在 Python 3.14 之前,当内置模块效率不足时,我们不得不安装第三方 zstandard
包来使用这个高性能算法。
现在,由于 compression.zstd
将被纳入标准库,我们可以直接获得对这个广泛采用的压缩标准的支持,并且减少对依赖项管理的压力。
结论
Python 正在不断演进以满足现代性能和易用性需求。而 Zstandard 在 3.14 版本中的加入便是绝佳例证。
无论您是在构建数据管道、缓存系统,还是任何涉及压缩数据的场景,compression.zstd
都将成为您乐于使用的全新利器。
感谢阅读。❤️ 希望您享受使用 Python 编程的乐趣!
你也许感兴趣的:
- 关于 Python JIT 的后续进展
- 如何改进Python打包,或者为什么14个工具至少有12个是多余的
- 我正在转向 Python 并且真的喜欢它
- Python 正在逐步移除 GIL,这对 Python 开发者意味着什么
- Python 打包工具 Setuptools 最近的颠覆性变化
- 掌握 Python 3.8+ 中的海象操作符 (:=)
- Python 3.14 中的最佳新功能和修正
- 7 个精妙的 Python 内置命令行技巧,让您的编程更轻松
- Python 3.14 的 3 个语法更新将使您的代码更安全、更好用
- 14 个 Python 高级功能
你对本文的反应是: