python socket recv 阻塞问题

a154509543 2017-12-17 09:50:56
如题,我用其他语言写了服务端
用python写客户端

然后我现在是用:

while True:
a = tcp_client.recv(1024)
if not len(a):break
print a


当服务端不是即时返回信息的,服务端会连到其他接口做一些操作,当完成后才会有消息返回,不然就需要等候
但是在while True:里 我就无法进行其他操作

python 版本 2.7
...全文
1622 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
混沌鳄鱼 2017-12-18
  • 打赏
  • 举报
回复
线程之间是可以通信的,可以用threading.Event协调线程的运行。 队列或双向队列都是线程安全的,不用加锁。
a154509543 2017-12-18
  • 打赏
  • 举报
回复
引用 2 楼 xpresslink 的回复:
开个多线程啊,一个用来专门和服务器通信,把收到数据放到队列里。 另外的线程从队列取数据处理或处理其它事务。
大概懂你 的意思 谢谢,正在尝试,但是 我开出通信的线程,如果想要做回调的话, 也是可以的? 就是 事件 另外 按你说的 新开一个线程从队列里取数据,那不是要对操作的队列进行加锁?
混沌鳄鱼 2017-12-18
  • 打赏
  • 举报
回复
开个多线程啊,一个用来专门和服务器通信,把收到数据放到队列里。 另外的线程从队列取数据处理或处理其它事务。
a154509543 2017-12-17
  • 打赏
  • 举报
回复
我知道可以用select 不过想求个demo看看 谢谢~

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧