【发布时间】:2015-11-14 07:24:29
【问题描述】:
def run(self):
while True:
if not self.MessagesQueue.empty():
self.sendMessage()
response=self.s.recv(1024).decode("utf-8")
self.processResponse(response)
time.sleep(1)
def addMessageToQueue(self,message): #called from main thread
self.MessagesQueue.put(message)
这段代码在一个线程上运行,代码的问题是recv阻塞了线程,所以我只能在收到1024字节的数据时才可以sendMessage(),我想在任何时候发送数据,即使在迭代中1024 字节未完全接收。
我该怎么做? 谢谢。
【问题讨论】:
-
如果你不想依赖,为什么要在同一个线程中发送和接收?
-
在recv被阻塞时,我可以使用socket发送吗?
-
是的,你可以。这两个方向是独立的通道。
-
如果我有两个线程,一个发送一个接收,我不需要同步套接字,对吗?
-
是否需要同步它们取决于应用程序。如果您的应用程序不需要同步,您可以在不同的线程中进行同步。