2

有没有办法让 StringIO.readlines() 阻塞,直到流关闭或通过 write() 提供新数据?

我正在编写一个接口,该接口需要像对象这样的阻塞文件,它会在我将数据写入 StringIO 实例之前立即返回。使用 initial_value 参数也不是一个选项,因为我需要使用中间结果。

或者,在 python 中是否有任何其他(文本)文件,如 fifo/stream?

4

1 回答 1

0

如果您使用线程,那么您应该使用Queue。如果您使用其他一些结构进行线程间通信,它肯定会为您节省严重的头痛。

如果你只需要readlines()and write(),那么你可以换行Queue

class QueueStream(object):
    def __init__(self):
        self._queue = Queue()

    def write(self, line):
        self._queue.put(line)

    def readlines(self):
        while True:
            item = self._queue.get()
            yield item
            self._queue.task_done()
于 2013-05-01T15:16:56.690 回答