【发布时间】:2021-05-18 20:15:56
【问题描述】:
我正在尝试写入和读取流而不是一次将所有内容加载到内存中。这是我想象的工作:
import io
stream = io.BytesIO()
def process_stream(stream):
while True:
chunk = stream.read(5).decode('utf-8')
if not chunk:
return
yield chunk
# this would be a separate thread, but here we just do it in serial:
for i in range(3):
stream.write(b'asdf')
for chunk in process_stream(stream):
print('I read', chunk)
但这实际上并没有打印出任何东西。 我可以让它工作,但只有以下两个更改,其中任何一个都需要一次将所有字节保存在内存中:
- 初始化
stream = io.BytesIO(b'asdf' * 3)而不是增量写入 - 使用
stream.getvalue()而不是增量读取
我很困惑增量写入只能通过批量读取来读取,而增量读取仅适用于批量写入。如何获得一个恒定内存(假设 process_stream 超过写作)的解决方案?
【问题讨论】: