如何处理Python中的内存溢出问题
我有一些非常大的字典需要处理,里面有超过一千万个单词。处理起来太慢了,有时候还会出现内存不足的问题。
有没有更好的方法来处理这些庞大的数据结构呢?
2 个回答
1
我不太明白你说的具体指什么,但我猜可能是一些比较大的结构,如果内存是个问题的话。
我之前遇到过一个Python的内存错误问题,通过把Python从32位版本换成64位版本解决了。实际上,有些Python的结构变得太大,超出了4GB的地址空间。你可以试试这个方法,可能是解决你问题的一个简单办法。
9
没错,这个东西叫做数据库。既然你用字典还挺好用(除了内存问题),我觉得用一个sqlite数据库也会很合适。你可以很简单地使用sqlite3,而且它的文档也写得很好。
当然,这个方法只有在你能把值表示成像json这样的格式,或者愿意相信本地文件里的序列化数据时才好用。也许你可以分享一下字典里值的具体内容。(我假设键是单词,如果不是请纠正我)
你可能还想考虑不一次性生成整个字典,而是分块处理。这在你的具体使用场景中可能不太实际(不幸的是,字典通常就是这样用的),但如果你能想到办法,重新设计一下你的算法可能会有帮助。