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

如何分块读取大体积pickle文件?

Pickle文件分块读写说明

常见文件格式的分块/跳过读取支持

  • CSV:支持pandas的chunk size参数分块读取
  • Excel:支持pandas的skiprows参数跳过指定行
  • Parquet:支持dask的chunksize参数分块读取

Pickle的现状与需求

Pickle本身没有原生的分块(chunk)或跳过行(skiprows)设置。如果想避免大文件导致内存错误,需要在读取时拆分数据,而非加载完成后再拆分。

示例代码的作用解析

你找到的这段代码是写入时分块的:

import pickle

filename = "./pickle.pickle"
str_to_save = "myname"

with open(filename,'wb') as file_handle:
    pickle.dump(str_to_save[0:4], file_handle)
    pickle.dump(str_to_save[4:], file_handle)
    
with open(filename,'rb') as file_handle:
    result = pickle.load(file_handle)
    print('result1:',result)
    result = pickle.load(file_handle)
    print('result2:',result)

它将数据拆成两部分,通过多次调用pickle.dump()写入同一个文件;读取时则通过多次调用pickle.load()逐个加载分块,这样就能实现读取时按需加载,不会一次性把整个大文件读进内存,刚好符合你的需求。

补充说明

如果想实现不依赖写入时的分块、纯读取阶段拆分Pickle文件,Pickle本身没有原生支持这种操作。虽然可以通过手动控制文件流读取位置实现,但需要对Pickle的序列化格式有深入了解,可靠性较低。更稳妥的方式还是像示例代码这样,在写入大数据时主动分块存储,读取时按需加载每个分块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:50:24