我有这个代码: NNModel.py
select
(Select Count(*) as FiltersMainCount from FiltersMain where
FilterMain_ID='555') as FiltersMainCount
(Select Count(*) as FiltersSubCount from FiltersSub where
FilterMain_ID='555') as FiltersSubCount
(Select Count(*) as cmCount from cm where Cat_Main_ID='222') as cmCount
(Select Count(*) as FiltraCount from Filtra where FilterMain_ID='555') as
FiltraCount
当我使用这个函数时它加载我的文件,我想将它们加载到一些静态或单例?类?在第一次,然后访问该文件。我怎样才能在Python / django中实现这一点?
这个文件相当大,现在我相信每个请求都将它加载到内存中,这是无效的我猜...
答案 0 :(得分:2)
听起来好像要缓存昂贵文件的负载,因此不需要在每个后续请求中重新加载。您可以使用Django的缓存框架来实现这一目标。
确保您拥有settings.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缓存框架的更多详细信息,请参阅https://docs.djangoproject.com/en/2.0/topics/cache/。