擅长:python、mysql、java
<p>您在评论中询问了可能的替代存储机制。如果您存储的数据是可用RAM的五分之一,那么我认为您需要非常小心地管理内存,因为在RAM用完之前,您无法复制太多数据;而且无论如何,您都会降低性能。您可以让sqlite使用blob为您做正确的事情,因为这些blob可能很大。在</p>
<p>看起来您将sqlite用作一个简单的键/值存储。你考虑过使用平面文件吗?如果您需要原子性,您仍然可以使用sqlite数据库来定义平面文件存储中哪些文件是有效的。您可以安全地做到这一点:只有在干净地写入所有平面文件之后才提交到数据库,并且只有在提交数据库中的相应删除之后才能删除平面文件。在</p>
<p>为了实现这一点,您需要一些机制将您的<code>dataObject</code>序列化为Python中的文件类型对象。如果向Pickle传递一个文件类型的对象,Pickle可以为您完成这项工作,但我怀疑它仍然效率低下。在</p>
<p>你说你在做数值模拟;你知道纽比吗?numpy数组支持一个<code>tofile</code>函数,它将比pickle更有效,并且如果您还没有使用它,您可能会在模拟中获得显著的性能提升。在</p>