У меня есть следующий код в вызове потока $ init :
self.conn = copy.deepcopy(conn)
self.conn.setblocking(0)
conn является сокетом и передается в качестве аргумента в $ init Каждый поток получает уникальный сокет.В методе запуска у меня есть:
self.running = True
self.conn.send("Connected")
print self.name, "has a timeout of", self.conn.gettimeout()
while self.running:
try:
now = self.conn.recv(8192)
print "Recieved:", now, "\n\tFrom:", self.name
self.process(now)
except socket.error:
raise
print "hi from", self.name
time.sleep(1)
Тайм-аут печатается как 0.0, но «привет от имени потока» распечатывается только тогда, когда сообщение получено и исключение никогда не возникает!Похоже, что метод recv блокирует, но зачем это делать?