有没有办法让 StringIO.readlines() 阻塞,直到流关闭或通过 write() 提供新数据?
我正在编写一个接口,该接口需要像对象这样的阻塞文件,它会在我将数据写入 StringIO 实例之前立即返回。使用 initial_value 参数也不是一个选项,因为我需要使用中间结果。
或者,在 python 中是否有任何其他(文本)文件,如 fifo/stream?
有没有办法让 StringIO.readlines() 阻塞,直到流关闭或通过 write() 提供新数据?
我正在编写一个接口,该接口需要像对象这样的阻塞文件,它会在我将数据写入 StringIO 实例之前立即返回。使用 initial_value 参数也不是一个选项,因为我需要使用中间结果。
或者,在 python 中是否有任何其他(文本)文件,如 fifo/stream?
如果您使用线程,那么您应该使用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()