【发布时间】:2014-11-14 15:27:39
【问题描述】:
我正在尝试对我的硬盘进行基准测试,即计算其延迟 (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 file byte benchmarking disk