如何使用Python(django)将文件存储在内存中?
我有以下代码: NNModel.py如何使用Python(django)将文件存储在内存中?,python,django,python-3.x,Python,Django,Python 3.x,我有以下代码: NNModel.py import pickle from keras.models import load_model def load_obj(name): with open('/home/user/' + name + '.pkl', 'rb') as f: return pickle.load(f) def load_stuff(): model = load_model("/home/user/model2.h5") voc
import pickle
from keras.models import load_model
def load_obj(name):
with open('/home/user/' + name + '.pkl', 'rb') as f:
return pickle.load(f)
def load_stuff():
model = load_model("/home/user/model2.h5")
voc = load_obj('voc')
return (model,voc)
当我使用这个函数时,它会加载我的文件,我想将它们加载到某个静态或单例类?第一次,然后访问该文件。如何在Python/django中实现这一点
这个文件相当大,现在我相信每个请求都会将其加载到内存中,这是不高效的,我想…听起来好像您想缓存昂贵文件的加载,因此不需要在每个后续请求中重新加载。您可以使用Django的缓存框架来实现这一点 确保在
设置.py
中指定了缓存配置。例如,如果您正在使用memcache:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
'LOCATION': 'localhost:11211',
}
}
然后在代码中,您可以在尝试加载文件之前请求缓存:
from django.core.cache import cache
def load_obj(name):
with open('/home/user/' + name + '.pkl', 'rb') as f:
return pickle.load(f)
def load_stuff():
model = load_model("/home/user/model2.h5")
voc = cache.get('my_files_cache_key')
if voc is None:
voc = load_obj('voc')
cache.set('my_files_cache_key', voc, 600)
return (model,voc)
上述示例将缓存voc
的值10分钟(600秒)
有关设置和使用Django缓存框架的更多详细信息,请参阅