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

Python 将数据持久地保存在内存中,python,python-3.x,persistent-storage,Python,Python 3.x,Persistent Storage,我想写一个Python脚本,将硬盘中的2GB数据加载到内存中,然后每当其他程序请求时,它必须获得一个输入,并根据输入对该数据进行一些计算。对我来说,重要的是将这2 GB的数据持久地保存在内存中,以加快计算速度,更重要的是避免巨大的I/O负载 如何将数据永久保存在内存中?或者更一般地说,我应该如何在Python中解决此类问题?根据您拥有的数据类型,可以将数据保存在Python列表、集合、hashmap或任何其他数据结构中。如果这只是一个缓存,您也可以使用Redis或memcached这样的服务器

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


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

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


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

确保您有2GB的可用RAM,然后使用mmap模块()将整个阵列映射到活动内存。

您确定进程间通信是提高性能的最佳方法吗?为什么不将它加载到内存中,与要使用数据的进程相同?@kaya3它不是进程间通信。运行计算的同一个脚本也应该保留数据。那么“其他程序请求时”是什么意思?另一个程序应该向我的python程序发送请求,然后它必须根据已经加载的数据进行计算并返回结果。因此,加载和计算是由一个python程序完成的。好吧,我假设查询和响应本身占用的内存相对较少,而执行计算所需的数据则较少?当然,为什么在python数据结构中保留2GB的数据会有问题?只要您有超过2GB的可用内存,一切都会顺利进行。@Soheil您可能希望将脚本转换为服务。试着使用一个模块,例如
bottle
,并公开一个HTTP API。另外,您应该知道,您最近使用的文件将保存在系统的文件系统缓存中,而且未来的读取速度会快得多,甚至不会碰到磁盘。为什么不能让这个脚本作为服务运行,而不是在运行一次后退出呢?如果Redis可以做你需要的过滤/搜索,你可以使用它。否则,您将需要进行服务。如何“为每个新输入图像”运行此脚本。难道没有什么东西一直在运行以获取新图像吗?