python加载模型包占用内存多大_加载pickle python对象会占用大量内存

我有一个

python的pickle对象,它生成一个180 Mb的文件.当我取消它时,内存使用量会爆炸到2或3Gb.你有类似的经历吗?这是正常的吗?

对象是包含字典的树:每个边是一个字母,每个节点都是一个潜在的单词.因此,要存储一个单词,您需要的边数与该单词的长度一样多.所以,第一级是最多26个节点,第二个是26 ^ 2,第三个是26 ^ 3等…对于每个节点都是一个单词我有一个属性指向关于单词的信息(动词,名词,定义等…).

我有最多约40个字符的单词.我有大约五十万条款.一切顺利,直到我腌制(使用简单的cpickle转储):它提供180 Mb文件.

我在Mac OS上,当我取消这些180 Mb时,操作系统会给python进程提供2或3 Gb的“内存/虚拟内存”:(

我没有在这棵树上看到任何递归:边缘的节点本身就是一个数组数组.不涉及递归.

我有点卡住:这些180 Mb的加载大约是20秒(没有谈到内存问题).我不得不说我的CPU不是那么快:核心i5,1.3Ghz.但我的硬盘是ssd.我只有4Gb的内存.

要在我的树中添加这500 000个单词,我会阅读大约7 000个文件,每个文件包含大约100个单词.这个读取使得mac os分配的内存高达15 Gb,主要是在虚拟内存上:(我一直在使用“with”语句确保关闭每个文件,但实际上并没有帮助.阅读文件带走对于40 Ko,0.2秒.对我来说似乎很长.将它添加到树上要快得多(0.002秒).

最后我想创建一个对象数据库,但我猜python并不适合.也许我会去MongoDB 🙁

class Trie():

"""

Class to store known entities / word / verbs...

"""

longest_word = -1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值