Common Lisp有^{
我想在Python里也一样。
我有一个文件foo.py
,它包含如下内容:
cache = {}
def expensive(x):
try:
return cache[x]
except KeyError:
# do a lot of work
cache[x] = res
return res
当我做^{cache
的值丢失了,这是我想要的
避免。你知道吗
cache
在reload
之间?你知道吗PS。我想我可以跟着How do I check if a variable exists?:
if 'cache' not in globals():
cache = {}
但由于某种原因它看起来不像是“Python”。。。 如果是TRT,请告诉我!你知道吗
cache
中的值非常大,我不能每次需要它们时都去磁盘。你知道吗
这里有几个选择。一种是使用临时文件作为缓存的持久存储,并在每次加载模块时尝试加载:
唯一的问题是,您需要相信环境不会编写任何恶意文件来代替临时文件(对于错误或恶意构造的数据,
pickle
模块是不安全的)。你知道吗另一种选择是为缓存使用另一个不会重新加载的模块:
然后:
由于重新加载的全部目的是确保已执行模块的代码再次运行,因此根本无法避免某种“重新加载检测”
您使用的代码似乎是您参考的问题中给出的最佳答案。你知道吗
相关问题 更多 >
编程相关推荐