[python技巧]使用pickle.dump出现memoryError

问题描述:

    在使用pickle来持久化将大量的numpy arrays存入硬盘时候,使用pickle.dump方法的时出现MemoryError。

解决办法:

    本质原来是因为pickle本身的一些bug,对大量数据无法进行处理,但是在pickle4.0+可以对4G以上的数据进行操作,stack overflow上有人给出了一些解释和分批次写入disk的方法 。

    但是我觉得这都是不是一些好办法,最好的办法就是抛弃pickle,使用joblib这个包来实现持久化存储。其主页详细介绍了如何来使用joblib。

    简单介绍一下joblib中dump和load的使用,比如如果我们要将一个numpy arrays存入文件:

   

import numpy as np
data = [('a', [1, 2, 3]), ('b', np.arange(10))]
with open(filename, 'wb') as fo:  
    joblib.dump(data, fo)
with open(filename, 'rb') as fo:  
    joblib.load(fo)

    joblib还有并行处理和压缩存储等功能,这些都可以在主页找到相应的example。

 

 

   

   

   

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值