python笔记:select,unix socket 1 select 和 socket 在python中可以使用select轻松监听io的变化,自然可以用来对socket做异步监控。下面是一个聊天室的例子: [http://www.cnblogs.com/hazir/p/python_chat_room.html](http://www.cnblogs.com/hazir/p/python_chat_room.html "http://www.cnblogs.com/hazir/p/python_chat_room.html") 通过这个例子可以轻松封装一个本地消息机制。 2 unix socket 如果是在Local,可以使用unix socket。将连接改成下面代码即可。然后使用select监听所有的socket。 ``` try: os.unlink(self.unix_path) except OSError: if os.path.exists(self.unix_path): raise svcsock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) svcsock.bind(self.unix_path) svcsock.listen(1) ``` [https://pymotw.com/2/socket/uds.html](https://pymotw.com/2/socket/uds.html "https://pymotw.com/2/socket/uds.html") 3 生成器实现 在客户端可以使用生成器替代select。 ``` sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) sock.settimeout(30) # connect to remote host try: sock.connect(self.unix_path) except: raise Exception("UnixSocketClient unable to connect") while True: try: data = sock.recv(RECV_BUFFER) if data == b'': raise Exception("Disconnected from chat server") yield data except socket.timeout: pass ``` 来自 大脸猪 写于 2016-10-25 17:15 -- 更新于2020-10-19 13:06 -- 0 条评论