记录Python使用flask框架,报错(主线程不在主循环之内)
方法1
注释掉plot.show()
方法2
原代码:
import matplotlib.pyplot as plt
改为:
import matplotlib
matplotlib.use('Agg')
from matplotlib import pyplot as plt
"""
use ( 'Agg ')这里是因为matplotlib的默认backend是TkAgg
而FltkAgg,GTK,GTKAgg,GTKCairo,TkAgg , wx or wxAgg这几个backend都要求有GUI图形界面。但是linux环境是没有图形界面的
所以需要手动指定为不需要GUI的backend--------Agg,Cairo,PS,PDF or svG
"""
问题表象
flask框架在cmd命令中运行时,后台代码执行plt.show(),图形框强行启动
实质
参考博主1的帖子
- matplotlib.pyplot造成的问题。
- matplotlib.pyplot在运行的时候,是需要在主线程(Main Thread)上运行的。
报错原因可能是在使用多线程的时候,将使用matplotlib.pyplot的函数用在了子线程里面。