tensorflow RuntimeError:主线程不在Matplotlib和Flask的主循环中

cdmah0mi  于 2023-04-07  发布在  其他
关注(0)|答案(3)|浏览(140)

我正在使用flask,matplotlib保存图像和tensorflow创建会话。当我运行以下代码时,我得到了上面的错误。flask路由是否在单独的线程上运行?如何使fig.saveFig代码在主线程上运行。非常感谢

@app.route('/open', methods = ['GET', 'POST'])
 def sendOutput():
     global loss,a2,xP,yP,scale,sess,fig
     test_X,test_Y = own_model.getEvaluateData(scale)
     cost,ans = sess.run([loss,a2],feed_dict={xP:test_X,yP:test_Y})
     d = np.array(ans) - np.array(test_Y)
     val = hist(d,100)
     sess.close()
     fig.saveFig('abc.png') //Errror on this line
0md85ypi

0md85ypi1#

我也遇到过同样的情况,Flask和Matplotlib的组合。对我有效的是将Agg指定为Matplotlib后端。

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

# Your code here

您可以参考Matplotlib文档(Web应用程序服务器中的Matplotlib)了解详细信息。

uqzxnwby

uqzxnwby2#

显然这是TKinter的问题。您没有发布完整的错误消息(你真的应该这样做),但我正在做一些非常相似的事情,所以我99.9%肯定你的问题和我的一样。我正在用tensorflow,flask等构建一个应用程序。我得到了同样的错误,间歇性地(有时它工作)。这里有一些类似问题的链接。我希望这有帮助!我认为我的解决方案将远离matplotlib。

wwwo4jvm

wwwo4jvm3#

线程问题。我在使用石灰时遇到了同样的问题。下面是为我解决的问题。
我从改变:

if __name__=="__main__":
    app.run(host="0.0.0.0", port=5000)

收件人:

if __name__ == '__main__':
    from werkzeug.serving import run_simple
    run_simple('localhost', 5000, app)

相关问题