【发布时间】:2012-12-16 23:50:46
【问题描述】:
是否可以将 python(或 C++)数据存储在 RAM 中以备后用?如何实现?
背景: 我编写了一个程序来查找输入表中的哪些行与给定的正则表达式匹配。我可以在大约一秒或更短的时间内找到所有的行。然而问题是我每次启动这个程序时都会将输入表处理成一个 python 对象。此过程大约需要 30 分钟。
该程序最终将在 RAM 超过 128GB 的机器上运行。 python 对象需要大约 2GB 的 RAM。输入表很少更改,因此 python 对象(我目前每次都在重新计算)实际上很少更改。有没有一种方法可以让我创建这个 python 对象一次,将其存储在 RAM 24/7 中(如果输入表更改或服务器重新启动,则重新创建),然后每次需要时都使用它?
注意:python 对象在创建后不会被修改。但是,如果需要,我需要能够重新创建此对象。
编辑:我能想到的唯一解决方案就是让程序 24/7 全天候运行(作为守护进程??),然后根据需要向它发出命令。
【问题讨论】:
-
你正在生成一个你宁愿存储的位图索引,而不是每次 Python 加载时计算 - 我们是这样吗?
-
最简单的做法是让您的管理员为您制作一个 RAM 磁盘并将结果作为 pickle 文件写入其中。如果这是不可能的,你需要做一些体操:)
-
redis.io 也可能是一个可行的选择
-
@ Jon Clements - 是的,就是这样。我正在考虑编写一个在启动/重新启动时处理输入表的守护程序。但是我不确定我将如何向这个守护进程发出命令。但我不确定这是否是要走的路,可能还有更好的方法?