擅长:python、mysql、java
<p>将数据转换为dbm(导入任何dbm,或通过导入bsddb使用berkerley db…),然后使用dbm API访问它。</p>
<p>爆发的原因是python为任何对象都有额外的元信息,dict需要构造一个散列表(这将需要更多的内存)。你刚刚创建了这么多对象(6.5百万),所以元数据变得太大了。</p>
<pre><code>import bsddb
a = bsddb.btopen('a.bdb') # you can also try bsddb.hashopen
for x in xrange(10500) :
a['word%d' %x] = '%d' %x
a.close()
</code></pre>
<p>这段代码只需要1秒就可以运行,所以我认为速度是可以的(因为你说每秒10500行)。
btopen创建一个长度为499712字节的db文件,hashopen创建319488字节。</p>
<p>xrange输入为6.5M,使用btopen,输出文件大小为417080kb,大约需要1到2分钟完成插入。所以我觉得完全适合你。</p>