我试图在收到请求时使用multiprocessing.Process()调用函数big_task(),以便该函数(需要花费时间来计算)可以在我的计算机中运行,而flask可以并行运行并监听要求。但是我遇到一个错误:
RuntimeError: No root path can be found for the provided module "__mp_main__". This can happen because the module came from an import hook that does not provide file name information or because it's a namespace package. In this case, the root path needs to be explicitly provided.
基于另一个SO答案,我在调用app = Flask( name ,root_path:“ C:/ Users /..");
时尝试给出root_path参数现在我又遇到了一个错误:
AttributeError: module '__main__' has no attribute '__file__'
这大概是我当前的代码:
import numpy as np
import tensorflow as tf
def big_task(arr):
#some data manipulations using numpy
app=Flask(__name__,root_path="C:/Users/.../app")
@app.route("/home")
def home():
k=request.form['arr']
p=multiprocessing.Process(target=big_task,args=k)
p.start()
return 'ok'
if __name__=="__main__":
app.run(debug=False)
我是不熟悉烧瓶的人,不太了解为什么会发生此错误。我认为这与flask创建其状态或上下文有关,或者与Windows无法派生新进程有关。有人可以给一个很好的解释吗?