我有一个python Flask应用程序使用蓝图和socketio在启动应用程序之前将一个大型模型(5GB)加载到内存中,如下所示:
launcher.py
import app
from model import load_model
if __name__ == "__main__":
load_model()
app.main()
app.py
from app import app, socketio
def main():
socketio.run(app, port = 5000)
model.py
model = None
def load_model():
global model
if model is None:
model = load_bigass_model_from_external_source() #this takes roughly 40 minutes
def get_model():
return model
然后在我看来我可以打电话:
views.py
from model import get_model
@blueprint.route("/", methods=["GET"])
def home():
print get_model()
现在一切正常,除非我开始更改代码。 Werkzeug重新加载(这本身很好),但它也会再次加载我的模型。加载模型大约需要40分钟,因此您可以看到这不是很理想。
我想知道是否有办法让Werkzeug重新加载其他所有内容,但如果已加载一次,请将模型保留在内存中。