Django web 调用两次 Matplotlib 报错问题

最近在写python web,因为要和TensorFlow结合,就出现了一个很匪夷所思的问题,

Traceback (most recent call last):
  File "/home/pi/Code-working-library/stackoverflow-paste.py", line 140, in <module>
    app.equipTemp.set(tempread)
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 203, in set
    return self._tk.globalsetvar(self._name, value)
RuntimeError: main thread is not in main loop

在StackOverflow查询之后,大多是python Django多线程的问题,说实话刚接触看不懂….

在多次调试之后,发现:
Django连续两次调用A程序不会出现问题,但是Django连续调用两次B程序就会出现上面的问题。我详细对比了两个程序的查询,发现B程序比A程序多出一段关于Matplotlib代码。所以就把问题锁定到Matplotlib上来了!

查询Matplotlib有关问题发现,Matplotlib的默认backend是TkAgg,如果改为agg就不会报错,具体原因还不知道。具体做法就是在使用Matplotlib的文件头部增加:

    import matplotlib.pyplot as plt  
    plt.switch_backend('agg')  

python 版本 3.6
Django本包 2.0.5

希望遇到此问题的能及时解决!

你可能感兴趣的:(Django web 调用两次 Matplotlib 报错问题)