python - 将多处理与烧瓶一起使用时出现状态或上下文错误
问题描述
我试图在收到请求时使用 multiprocessing.Process() 调用函数 big_task() ,以便该函数(需要时间来计算)可以在我的计算机中运行,而烧瓶可以并行运行并侦听请求。但我收到一个错误:
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)
我是烧瓶的新手,不太明白为什么会发生这个错误。我认为这与烧瓶创建其状态或上下文有关,或者与 Windows 无法分叉新进程有关。有人可以给出一个很好的解释吗?
解决方案
推荐阅读
- maven - 可以从命令行将 maven updatePolicy 设置为从不吗?
- python - 如何将 60 分钟的数据点划分为 15 分钟?
- google-apps-script - 优化 OnEdit() 脚本
- android - Cordova 应用程序仅在分屏视图/多个应用程序视图中显示
- mysql - 如何使用游标根据另一列更新某些列?
- c - 如何将 char** 转换为 Vec
生锈 - ruby-on-rails - 多个字段 sort_by 组合的 reverse 和 not
- reactjs - 异步更新 mobx 反应钩子上的存储
- javascript - 当用户有一段时间没有登录应用程序时发送电子邮件
- excel - 参考 VBA 从工作簿中运行宏,其名称在单元格区域中指定 & 隐藏模块错误中的编译错误