2014-10-21 34 views
2

在我的Django項目的views.py中,在代碼中的某個點上,我想要在服務器上顯示一個圖形圖以實時顯示用戶輸入。所以,我創建了另一個文件plotter.py在同一文件夾中views.py,用下面的內容來顯示一個簡單的圖形:Django和Matplotlib:信號只能在主線程中工作

進口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,我import plotter,然後在我想要的文件中,我有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 

我怎樣才能做到這一點,而不會導致這樣的錯誤?

+0

不知道這是_really_要做到這一點的方式。最好有一個REST接口或進程間消息傳遞,並在你自己的進程中繪製GUI代碼。 – tacaswell 2014-10-22 03:31:55

回答

5

運行服務器如下

python manage.py runserver --nothreading --noreload