You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Pickle序列化对象的大小远小于预期值?

为什么pickle序列化结果远小于理论值?

问题的核心原因是你创建的大列表里包含的是55个指向同一个小列表对象的引用,而非55个独立的浮点数列表,pickle的序列化机制会自动处理重复引用,避免重复存储相同内容。

具体拆解:

  • 代码[numpy.random.random(384).tolist()]*55中,numpy.random.random(384).tolist()仅执行一次,生成一个含384个浮点数的小列表;*55只是把这个小列表的引用复制了55次,最终大列表里的55个元素都是指向同一个小列表的指针。
  • pickle序列化时会追踪对象引用:第一次遇到这个小列表时,会完整序列化它(对应你得到的3584字节);之后每遇到一次对它的引用,只写入一个极短的“引用标记”,而非重复序列化整个384个浮点数的列表。

如果要生成55个独立的列表,改用列表推导式即可:

len(pickle.dumps([numpy.random.random(384).tolist() for _ in range(55)]))

此时每个小列表都是全新对象,pickle会逐个序列化,结果会接近你计算的168960字节。

内容的提问来源于stack exchange,提问作者AlwaysLearning

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 09:14:50