【发布时间】:2011-10-04 23:37:54
【问题描述】:
有没有办法将结果变量保存在内存中,这样我就不必在每次运行脚本开头时重新计算它? 每次运行我的脚本时,我都会对数据集(我从磁盘读取)进行一系列长(5-10 秒)的精确操作。 这不会是太大的问题,因为我非常擅长使用交互式编辑器在运行之间调试我的代码;但是有时交互功能并不能解决问题。
我知道我可以将结果写入磁盘上的文件,但我希望尽可能避免这样做。这应该是一个解决方案,它在我第一次运行脚本时生成一个变量,并将它保存在内存中,直到 shell 本身关闭或直到我明确告诉它失败。像这样的:
# Check if variable already created this session
in_mem = var_in_memory() # Returns pointer to var, or False if not in memory yet
if not in_mem:
# Read data set from disk
with open('mydata', 'r') as in_handle:
mytext = in_handle.read()
# Extract relevant results from data set
mydata = parse_data(mytext)
result = initial_operations(mydata)
in_mem = store_persistent(result)
我有一个暗示 shelve 模块可能是我在这里寻找的,但看起来为了打开一个搁置变量我必须为持久对象指定一个文件名,所以我'不确定这是否正是我想要的。
关于让搁置做我想做的事的任何提示?有什么替代的想法吗?
【问题讨论】:
-
人们经常使用 Jupyter 笔记本来做这件事