我试图绘制通过套接字接收的数据。我使用“Matplotlib”作为绘图库,使用“cPickle”来序列化python对象。
当我运行我的代码时,绘图窗口打开并挂起。我已经尝试了几种方法来解决它,但没有帮助
不知道这可能有用,但是......我在Win 7(64位)上使用“Python 2.7 - 32位”。
这是我的代码
def init_plot():
matplotlib.pyplot.ion()
figsrc = matplotlib.pyplot.figure()
axsrc = figsrc.add_subplot(111, autoscale_on=True)
def plot(x,y,z=None):
if z == None:
pylab.plot(x,y)
else:
pylab.plot(x,y,z)
pylab.show();
def unserialize(data):
return pickle.loads(data)
def init_socket():
global UDPSock,buf
# Set the socket parameters
host = "localhost"
port = 21567
buf = 10240
addr = (host,port)
# Create socket and bind to address
UDPSock = socket(AF_INET,SOCK_DGRAM)
UDPSock.bind(addr)
if __name__ == '__main__':
init_plot()
init_socket()
while 1:
data,addr = UDPSock.recvfrom(buf)
temp = numpy.array(unserialize(data))
plot(temp[0,:],temp[1,:])
UDPSock.close()
客户端代码工作正常。 我不知道它是否是32-64位不兼容或某些代码问题。
感谢。
PS:我尝试了s.setblocking(flag)
和socket.settimeout(value)
的“pyfunc”建议......仍然没有帮助
答案 0 :(得分:0)
我认为您只需要将pylab.show()更改为pylab.draw()