python处理二进制文件_python 读取二进制文件的速度

我需要从 .wav 读取 pcm 数据,一开始使用 open() 直接打开文件,然后 read() 每次读一个样本,

测试一个 5.49M 文件, 时长 29s, 的文件,读到结尾,花了 1850 ms, 如果要处理数据。

能否通过先全部读到内存来加速, BytesIO 似乎只做这个事的, 但是我不知道它把文件读到内存是一次性的还是怎样,需要多少时间,测试花的时间差不多

from io import BytesIO

import time

if __name__ == '__main__':

with open('1875.wav', 'rb') as raw_file:

①# file = raw_file # 这句是直接从文件读取的方式

②file = BytesIO(raw_file.read()) # 这句是用了 BytesIO

start_time = time.time()

buff = []

while True:

byte = file.read(1)

if byte:

buff.append(byte)

else:

break

end_time = time.time()

print(' time using: ', (end_time - start_time) * 1000, 'msec')

使用①的情况下 time using: 1862.1060848236084 msec

使用①的情况下 time using: 1743.0999279022217 msec

时间时有浮动的

所以我想知道, ByteIO 是怎样工作的, 它能达到我的目的吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值