gpt4 book ai didi

Python - 基准测试磁盘 - 在文件中准确写入 x 字节

转载 作者:太空宇宙 更新时间:2023-11-04 08:09:14 24 4
gpt4 key购买 nike

我正在尝试对我的硬盘进行基准测试,也就是说计算它的延迟 (ms) 和吞吐量 (MB/s)。为此,我想测量 Python 函数 f.write 的执行时间。我需要的是将 x 个字节准确地写入我的文件。我知道我需要使用

打开我的文件
f = open(file_name, 'wb')

那我做的就是

for i in range(blocksize)
f.write(b'\xff')

但是,我获得的吞吐量 (MB/s) 结果太低了。延迟看起来是正确的。所以我推断,当我执行前几行时,我实际上是在向文件写入多个字节,我正在写入一个包含一个字节的字符串......我知道该对象在 Python 中实际上没有大小,但有没有办法解决这个问题?

编辑好的,这是新代码,现在结果莫名其妙地太高了!我的磁盘写入限制应该是 100MB/s,但我的结果快了十倍。怎么了 ?导入系统导入时间

f = open("test.txt",'wb+')

def file_write_seq_access(blocksize):
chunk = b'\xff'*4000
for i in range(blocksize//4000):
f.write(chunk)

if __name__ == '__main__':
start_time = time.time()
file_write_seq_access(int(sys.argv[1]))
stop_time = time.time()
diff = stop_time - start_time
print diff, "s"
print (int(sys.argv[1])/diff),"B/s"

最佳答案

简单地说,Python 对于这种逐字节写入的速度不够快,而且文件缓冲和类似操作会增加太多开销。

你应该做的是分块操作:

import sys

blocksize = int(sys.argv[1])

chunk = b'\xff'*10000
with open("file.file", "wb") as f:
for _ in range(blocksize // 10000):
f.write(chunk)

可能使用 PyPy 应该进一步(非常小,可能是负面的)加速。

请注意,操作系统会干扰此处的计时,因此会有很多差异。使用 C 可能会更快。


在做了一些计时之后,这与 dd 的速度匹配,所以你不会变得更快。

关于Python - 基准测试磁盘 - 在文件中准确写入 x 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25944010/

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