项目概述
最近做了一个项目,只要功能就是是在本机运行模型,并通过flask暴露一个api接口给前端
遇到的问题
众所周知,运行一个模型都是需要一个比较久的时间
这样的话,就会造成前端一直在等,也不知道后端到底在干嘛,有没有出问题
解决思路
将flask程序设为主进程,跑模型的程序设为子进程,子进程开始后主进程return
运行情况记录在数据库中,之后需要时可以再向后端发送一个GET请求,查看当前的运行情况
具体解决办法
def run_test_py(obj):
# 调用外部Python脚本
subprocess.run(['python', 'test.py',obj])
#创建一个子进程并启动
#args里面放的是函数运行需要的参数
thread = threading.Thread(target=run_test_py,args=(obj,))
thread.start()
#主进程结束,子进程继续运行
return
subprocess.run()的作用是调用别的python脚本,[]里的'python'可以换成你的python环境路径,obj是携带的参数,这样test.py就会在你指定的环境下运行了
thread = threading.Thread(target=run_test_py,args=(obj,))
这个的作用就是创建一个子进程
target输入你的目标函数,args里面是你要传递的参数
注意:一定要用args传参,要不然跟普通调用函数没什么区别。并且args的(,),里面就算只有一个参数,“,”也得有,要不然会报错
run_test_py() takes 1 positional argument but 231 were given