我正在尝试为大量输入寻找单词模式。为此,我使用了字典,几个小时后,程序因 MemoryError
而崩溃。
我修改了程序。我通过 MySQLdb 创建了一个数据库,并在其中插入了 pattern-index
的值。因此,对于每个单词,我检查它是否在索引中,如果不在,我将其写入带有值的索引中。问题是数据库方法太慢了。
我想知道是否有任何方法可以结合字典和数据库,例如:
if ram <90% usage:
seek into dict
append to dict
else:
if not (seek into dict):
seek into database
append to database
将字典用于输入 100 kb 数据的相同目的需要大约 1.5 秒
对相同的输入使用数据库需要大约 84 秒
原始输入为 16 GB。我还不知道需要多少时间来处理。
最佳答案
简答(详细答案待定):
您对 MySQL 的使用很差,您根本不想提交,因为您只是将数据库用作内存的扩展。仅删除提交应该会给您带来很大的改进
比使用 MySQL 使用更好 leveldb (pip install leveldb) with sync = false
根据您要使用的内存调整以下值
- block_cache_size = 512*1024*1024 #512Mo #越重要
- write_buffer_size = 10*1024*1024 #10Mo
因为你有一个 MemoryError,这意味着你有一个 32 位系统,这意味着为一个进程启用的总内存不能超过 4 Go,所以调整值以适应 min(你的系统内存,4Go)
关于python - Python 中的内存问题。词典与数据库(或者你能把两者结合起来吗?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22479640/