Я пытаюсь нанести данные, полученные через сокет. Я использую "Matplotlib" в качестве библиотеки для построения графиков и "cPickle" для сериализации объектов Python.
Когда я запускаю свой код, окно графика открывается и зависает. Я пробовал несколько способов обойти это, но без помощи
Не знаю, может ли это помочь, но ... Я использую "Python 2.7 - 32-разрядная версия" на Win 7 (64-разрядная версия).
Вот мой код
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: я попробовал "pyfunc's" предложение о s.setblocking(flag)
и socket.settimeout(value)
... Все еще не помогло