我意识到使用全局变量不是一个好的编码实践。我需要在启动时加载机器学习模型,这样我就不需要在每次请求时处理它。我有Flask来处理请求。但是我无法理解在Python启动时初始化变量的好习惯。在Java中,我想我的方法是以下列方式使用带有静态变量的类:
Class A{
private ClassB classB;
A() {
//Load some file into memory
classB = new ClassB();
classB.x = //set from file
}
public static getClassB() {
return classB;
}
}
Is this something which is a good practice to follow in Python as well? I could then probably do something like
@app.route('/', methods=['GET'])
def main():
b = getClassB() ; //this time it shouldn't load
score = b.predict()
return score
if __name__ == 'app':
try:
getClassB() //this will load once at startup
except Exception,e :
print 'some error'
答案 0 :(得分:1)
如果没有某种全局性的话,很难做到这一点 - 除非您希望在每个请求的基础上加载模型,这显然不具备性能。
flask.g实际上是每个请求的上下文。
只需将其设置为init文件或主文件中的变量即可。丙氨酸:
app = Flask(__name__)
learning_model = load_learning_model()
@app.route('/', methods=['GET'])
def home():
#here you can use the learning model however you like
学习模型可以是类或其他类型的实例。