最近在写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
希望遇到此问题的能及时解决!