Python Django和Matplotlib:信号仅在主线程中工作
在Django项目的Python Django和Matplotlib:信号仅在主线程中工作,python,django,matplotlib,Python,Django,Matplotlib,在Django项目的views.py中,在代码中的某个点,我想在服务器上显示一个图形图,以实时显示用户输入。因此,我在与views.py相同的文件夹中创建了另一个文件plotter.py,其中包含以下内容以显示简单的图形: 进口numpy 导入matplotlib.pyplot def plot(): N = 50 x = numpy.random.rand(N) y = numpy.random.rand(N) colors = numpy.random.ran
views.py
中,在代码中的某个点,我想在服务器上显示一个图形图,以实时显示用户输入。因此,我在与views.py
相同的文件夹中创建了另一个文件plotter.py
,其中包含以下内容以显示简单的图形:
进口numpy
导入matplotlib.pyplot
def plot():
N = 50
x = numpy.random.rand(N)
y = numpy.random.rand(N)
colors = numpy.random.rand(N)
area = numpy.pi * (15 * numpy.random.rand(N))**2
matplotlib.pyplot.scatter(x, y, s=area, c=colors, alpha=0.5)
matplotlib.pyplot.show()
然后,在views.py
中,我导入绘图仪,然后在文件中的所需位置,我有plotter.plot()
。但是,这会产生以下错误:
Request Method: POST
Request URL: http://localhost:8000/teacher/
Django Version: 1.7
Exception Type: ValueError
Exception Value:
signal only works in main thread
Exception Location: C:\Anaconda\lib\site-packages\matplotlib\backends\backend_qt5.py in mainloop, line 150
Python Executable: C:\Anaconda\python.exe
Python Version: 2.7.8
如何在不引起此类错误的情况下实现这一点?按如下方式运行服务器
python manage.py runserver --nothreading --noreload
我不确定这是你想要的方式。最好有一个REST接口或进程间消息传递,并在自己的进程中绘制gui代码。这只会禁用开发服务器中的线程。