main.py 文件源码

python
阅读 21 收藏 0 点赞 0 评论 0

项目:hondana 作者: uchan-nos 项目源码 文件源码
def run(self):
        poll = select.poll()
        poll.register(self._read_fd, select.POLLIN | select.POLLPRI | select.POLLHUP)
        poll.register(self._quit_pipe, select.POLLHUP)

        reader = LineReader()
        def process_line(readbytes):
            reader.append(readbytes)
            line = reader.readline()
            if line is None:
                return

            if self._next_flag.is_set():
                self._lines.put(line)
                self._next_flag.clear()
            reader.skiplines()

            self._processed.set()

        while True:
            events = poll.poll()
            if not events:
                continue

            for e in events:
                fd, ev = e[0], e[1]
                if fd == self._quit_pipe and (ev & select.POLLHUP) != 0:
                    # quit
                    return
                elif fd == self._read_fd and (ev & (select.POLLIN | select.POLLPRI)) != 0:
                    # there are some data
                    readbytes = os.read(fd, 1024)
                    if not readbytes:
                        # EOF
                        return
                    process_line(readbytes)
                elif fd == self._read_fd and (ev & select.POLLHUP) != 0:
                    # read_fd closed
                    return
                else:
                    self.log(msg)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号