Matplotlib +套接字=挂断?

时间:2010-10-22 05:11:12

标签: python matplotlib


我试图绘制通过套接字接收的数据。我使用“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”建议......仍然没有帮助

1 个答案:

答案 0 :(得分:0)

我认为您只需要将pylab.show()更改为pylab.draw()