【发布时间】:2016-09-05 12:09:50
【问题描述】:
我的应用是一个 tcp 服务器,使用 epoll 来等待请求。
我想在同一个循环中等待队列。
即:wake up the thread either socket r/w is available or queue is not empty.
我确实搜索了很多,但没有找到好的解决方案。
我已经考虑了几种解决方法:
为 epoll.wait 设置一个超时时间(例如 0.5),然后 queue.get_nowait 直到为空。 这样一来,即使没有什么可处理的,也浪费了cpu资源。 而且不是那么实时。
使用域套接字代替队列,这样epoll可以同时等待。 这样,发送方必须将 python-object 转换为字符串/二进制数据以 传输(和接收器相反),这很无聊。
--- 没有一个能让我满意。
我想知道epoll是否可以等待Event? -- 这样我就可以在 queue.put() 之后使用 event.set()。 或
有什么好的方法可以解决我的问题吗?
谢谢!
【问题讨论】:
标签: python multithreading sockets queue epoll