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

Mih*_*sai 7 multithreading matplotlib flask tensorflow

我正在使用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
Run Code Online (Sandbox Code Playgroud)

CpK*_*CpK 17

我在同样的情况下,Flask与Matplotlib组合.对我有用的是将Agg指定为Matplotlib后端.

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

# Your code here
Run Code Online (Sandbox Code Playgroud)

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

  • 请注意,您需要将此代码放在任何其他导入之前,这些导入可能已经在导入matplotlib或设置Tkinter后端。 (6认同)
  • 这就像一个魅力,顺便说一句,“Agg”实际上是做什么的? (4认同)
  • 嘿,谢谢你的回答。我的代码现在可以工作,但我仍然收到警告 UserWarning:在主线程之外启动 Matplotlib GUI 可能会失败。你知道我可以做些什么来避免收到此警告吗? (2认同)

小智 3

显然这是 TKinter 的问题。您没有发布完整的错误消息(您确实应该这样做),但我正在研究非常相似的东西,所以我 99.9% 确定您的问题与我的相同。我正在用张量流、烧瓶等等构建一个应用程序。我间歇性地遇到同样的错误(有时有效)。以下是类似问题的一些链接。我希望这有帮助!我认为我的解决方案将不再使用 matplotlib。


归档时间:

查看次数:

4319 次

最近记录:

7 年,7 月 前