我写了这个脚本,我想用
创建不同的独立图形Worker().start()
如果它仅在1个线程中独立工作,它在IPython中不起作用,我无法创建Worker()
的多个实例。我的错是什么?
#!/usr/bin/env python
import pylab
import threading
import random
class Worker:
def worker(self):
samples = 100
x_axis = pylab.arange(0,samples,1)
y_axis = pylab.array([0]*samples)
fig = pylab.figure(1)
ax = fig.add_subplot(111)
ax.grid(True)
ax.set_title("Realtime Plot")
ax.set_xlabel("Time")
ax.set_ylabel("Amplitude")
ax.axis([0,samples,-1,1])
line1 = ax.plot(x_axis,y_axis,'-')
values = [0 for x in range(samples)]
for i in range(100):
values.append(random.random())
nsamples = min(len(values),samples)
x_axis = pylab.arange(len(values)-nsamples,len(values),1)
line1[0].set_data(x_axis,pylab.array(values[-nsamples:]))
ax.axis(
[x_axis.min(),
x_axis.max(),
min(pylab.array(values[-nsamples:])),
max(pylab.array(values[-nsamples:]))
])
pylab.draw()
pylab.pause(0.01)
pylab.close()
def start(self):
self.t = threading.Thread(target=self.worker)
self.t.start()
def stop(self):
self.t.stop
这是我得到的错误:
QPixmap: It is not safe to use pixmaps outside the GUI thread
QPixmap: It is not safe to use pixmaps outside the GUI thread
QObject::startTimer: QTimer can only be used with threads started with QThread
QObject::startTimer: QTimer can only be used with threads started with QThread
QObject::startTimer: QTimer can only be used with threads started with QThread
QObject::startTimer: QTimer can only be used with threads started with QThread
/home/canard/anaconda2/lib/python2.7/site-packages/matplotlib/backend_bases.py:2399: MatplotlibDeprecationWarning: Using default event loop until function specific to this GUI is implemented
warnings.warn(str, mplDeprecation)
python: Fatal IO error 11 (Resource temporarily unavailable) on X server :0.
我确实尝试过使用WxAgg的Ubuntu + Anaconda和Cygwin Python 2.7。