标签: python python-3.x
有没有办法让StringIO.readlines()阻塞,直到关闭流或通过write()使新数据可用?
我正在编写一个接口,它希望阻塞文件类对象,并且在我可以将数据写入StringIO实例之前立即返回。使用initial_value参数也不是一个选项,因为我需要使用中间结果。
或者在python中还有其他(文本)文件,如fifo / stream吗?
答案 0 :(得分:0)
如果您使用threads,则应使用Queue。如果您使用其他结构进行线程间通信,它将为您节省严重的麻烦。
如果您只需要readlines()和write(),那么您可以换Queue:
readlines()
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()