page contents

意义重大!Python 3.14 新模块 Zstandard 压缩来了

Python 3.14 即将推出,其中包含许多突破性的变化,例如删除 GIL和引入模板字符串。但有一个小的、实用的改进还没有引起足够的重视:将compression.zstd模块添加到标准库中。

attachments-2025-08-kq3RywKT689a98ace751c.jpgPython 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

# 生成一些可压缩数据

data = (str(math.pi).encode() * 10_000)

# 压缩函数

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)

# 基准测试函数

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 完全有理由将其纳入标准库。

为什么重要

zstandard在Python 3.14之前,当内置模块效率不够高时,我们必须安装第三方包才能使用这种高性能算法。

现在,由于compression.zstd将被纳入标准库,我们可以获得对这一广泛采用的压缩标准的开箱即用支持,并减少依赖管理的压力。

结论

Python 正在不断发展,以满足现代性能和可用性需求。3.14 版本中 Zstandard 的加入就是一个很好的例子。

无论您构建的是数据管道、缓存系统还是任何涉及压缩数据的东西,compression.zstd这都是您想要使用的新武器。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2025-08-12 09:28
  • 阅读 ( 27 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
小柒
小柒

2172 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 2172 文章
  3. Pack 1335 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章