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

时间:2018-04-19 12:56:25

标签: multithreading matplotlib tensorflow flask

我正在使用flask,matplotlib来保存图像和tensorflow来创建会话。我运行以下代码时遇到上述错误。烧瓶路线是否在单独的线程上运行?如何在主线程上运行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

2 个答案:

答案 0 :(得分:11)

我处在相同的情况下,与Matplotlib组合一起使用Flask。 对我有用的是将Agg指定为Matplotlib后端。

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

# Your code here

有关详细信息,请参阅Matplotlib文档(Web应用程序服务器中的Matplotlib)。

答案 1 :(得分:1)

显然这是TKinter的一个问题。你没有发布完整的错误信息(你真的应该这样做),但是我正在做一些非常相似的事情,所以我99.9%肯定你的问题和我的问题一样。我用tensorflow,flask,blah blah建立一个应用程序。我得到了同样的错误,间歇性地(有时它起作用)。以下是一些类似问题的链接。我希望这有帮助!我认为我的解决方案将远离matplotlib。 具有相同问题的线程客户端 在单独的线程中运行TKinter 在此输入链接描述