与烧瓶一起使用多处理时的状态或上下文错误

时间:2019-07-02 16:31:31

标签: python tensorflow flask multiprocessing

我试图在收到请求时使用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无法派生新进程有关。有人可以给一个很好的解释吗?

0 个答案:

没有答案