当前位置: 首页 > 知识库问答 >
问题:

将数据持久地保存在内存中

云炜
2023-03-14

我想写一个python脚本,它将2 GB的数据从硬盘加载到内存中,然后当其他程序请求时,它必须得到一个输入,并根据输入对这个数据进行一些计算。对我来说,重要的是将这2 GB的数据持久地保存在内存中,以加快计算速度,更重要的是避免巨大的I/O负载。

我应该如何将数据永远保存在内存中?或者更一般地说,我应该如何在Python中解决这样的问题?

共有2个答案

曾修真
2023-03-14

确保您有2GB的空闲可用RAM,然后使用mmap模块(https://docs.python.org/3/library/mmap.html)将整个数组映射到活动内存中。

通鸿风
2023-03-14

根据您拥有的数据类型,您可以将数据保留在Python列表、集、hashmap或任何其他数据结构中。如果这只是一个缓存,那么也可以使用Redis或memcached这样的服务器。

“永远”地将数据加载到内存中,或者每次需要时都这样做,并没有什么特别之处。您可以只加载到Python变量中并保留它们。

 类似资料:
  • 问题内容: 我创建了一个这样的对象: 我想保存该对象。我怎样才能做到这一点? 问题答案: 你可以使用标准库中的模块。这是你的示例的基本应用: 你还可以定义自己的简单实用程序,如下所示,该实用程序打开文件并向其中写入单个对象: 更新资料 由于这是一个非常受欢迎的答案,因此,我想谈谈一些高级用法主题。 实际使用该cPickle模块几乎总是可取的,而不是因为该模块是用C编写的并且速度更快。它们之间有一些

  • 我在研究内存数据库的概念。有关这方面的文章说, 内存数据库系统是一种将数据完全存储在主存中的数据库管理系统。 他们讨论了这个概念的优点和缺点。 我的问题是如果这些数据库管理系统将数据完全存储在主存储器中, 停电后所有数据都消失了吗??? 还是有办法保护数据???

  • 主要内容:一、数据持久化,二、持久化的形式,三、源码分析,四、总结一、数据持久化 redis做为一种内存型数据库,做持久化,个人感觉略有鸡肋的意思。似乎有一种,别人有,自己不有也不行的感觉。以目前Redis主流的应用方式,如果仔细分析,基本上都是在内存中即可完成,对持久化没要求或者说不大。再举一个反例,如果内存中有几百G甚至更多的数据,真要是整体当机,恢复的时间基本就是灾难。 目前基本应用仍然是以关系型数据库或者其它数据库(如Hadoop,Mysql等)为持久化

  • 问题内容: 有什么方法可以将结果变量保留在内存中,因此我不必每次运行脚本的开头都重新计算它?每次运行脚本时,我都会对数据集(从磁盘上读取)进行一系列(5-10秒)的确切操作。这不会有太大问题,因为我非常擅长使用交互式编辑器在两次运行之间调试代码。但是有时交互功能只是不切实际。 我知道我可以将结果写到磁盘上的文件中,但是如果可能的话,我想避免这样做。这应该是一个解决方案,它在我第一次运行脚本时会生成

  • 问题内容: 提交表单时出现此错误: org.hibernate.PersistentObjectException:分离的实体传递给持久化:com.project.pmet.model.Account; 嵌套异常是javax.persistence.PersistenceException:org.hibernate.PersistentObjectException:传递给持久对象的分离实体:c

  • null 假设我有100张唱片。缓存只能保存40条记录(最常用)和100条记录在磁盘文件(不在任何其他数据库中)。 所以,如果从这100条记录中请求任何东西,我就不必去实际的数据库(例如Sybase db)? 如果在100条记录中找到了密钥,但它不存在于内存缓存中(40条记录),则获取该密钥,放入内存缓存中,并使用驱逐策略将其他密钥交换到磁盘文件中(但在磁盘上,我总是有100条记录) 如果缓存和磁