gpt4 book ai didi

python - 从内存中读取字节 io.BytesIO 后是否可以删除它们?

转载 作者:行者123 更新时间:2023-12-05 06:20:08 31 4
gpt4 key购买 nike

我想使用 io 中的 BytesIO 类来创建数据流,但是如果我通过它传输大量数据,它会占用大量内存,所以我问是否可以释放“旧”使用的内存“我已经阅读过的数据。

如果 io 模块无法做到这一点,我愿意接受其他解决方案来解决我的问题。

下面是它现在的实现方式:

def __init__():
self.audio: av.container.InputContainer = av.open(
stream, "r", timeout=8, options=options, format="webm"
)
self.audio_stream: av.audio.stream.AudioStream = self.audio.streams.get(
audio=0
)[0]

self.output_buffer: io.BytesIO = io.BytesIO(b"")
self.output_container: av.container.OutputContainer = av.open(
self.output_buffer, "w", format="opus"
)

self.output_stream: av.audio.stream.AudioStream = self.output_container.add_stream(
"libopus", 48000
)

...


def fill(self):
position = 0
for packet in self.audio.demux(self.audio_stream):
packet: av.Packet
position += packet.duration
self.output_buffer.seek(0, 2)
self.output_container.mux_one(packet)

...

# then you can read from the buffer with
b = self.output_buffer.read(bytes_to_read)
# this should be Opus Encoded Audio data in bytes format

提前致谢!

最佳答案

对于仍在阅读的每个人,我找到了适合我的解决方案。使用 python 的 os 模块,您可以创建一个新管道 (os.pipe()),它会为您处理所有这些任务。

关于python - 从内存中读取字节 io.BytesIO 后是否可以删除它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60619462/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com