如何使用Python(django)将文件存储在内存中?

如何使用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

我有以下代码: 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 = 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缓存框架的更多详细信息,请参阅