python 写二进制文件 大文件 偏小_python – 读/写大二进制文件时的首选块大小

博客探讨了在处理大量二进制文件时如何选择合适的块大小(BLOCK_SIZE)以提高读写效率。作者指出,一个字节太小,而一次性读取4GB可能不切实际。他们询问是否存在最佳块大小,并考虑是否依赖于文件系统(如ext4)。代码示例使用Python的open()函数和缓冲区,通过迭代读取和处理文件块。问题涉及内存管理、I/O效率和Python的缓冲参数调整。
摘要由CSDN通过智能技术生成

我需要读写大量的二进制文件.是否有一个首选或甚至最佳的字节数(我称之为BLOCK_SIZE)我应该一次读取()?

一个字节肯定太少了,我不认为在RAM中读取4 GB也不是一个好主意 – 是否有“最佳”块大小?或者这甚至取决于文件系统(我在ext4)?我需要考虑什么?

Python’s open()甚至提供缓冲参数.我还需要调整一下吗?

这是示例代码,它只是将0.data和in.1.data中的两个文件连接到out.data(在现实生活中,有更多的处理与手头的问题无关).选择BLOCK_SIZE等于io.DEFAULT_BUFFER_SIZE,这似乎是缓冲的默认值:

from pathlib import Path

from functools import partial

DATA_PATH = Path(__file__).parent / '../data/'

out_path = DATA_PATH / 'out.data'

in_paths = (DATA_PATH / 'in-0.data', DATA_PATH / 'in-1.data')

BLOCK_SIZE = 8192

def process(data):

pass

with out_path.open('wb') as out_file:

for in_path in in_paths:

with in_path.open('rb') as in_file:

for data in iter(partial(in_file.read, BLOCK_SIZE), b''):

process(data)

out_file.write(data)

# while True:

# data = in_file.read(BLOCK_SIZE)

# if not data:

# break

# process(data)

# out_file.write(data)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值