我正在编写一个 gui 来执行美化的“dd”。
我可以只对“dd”进行子处理,但我想如果可以的话,我还不如使用python的open()
// read()
,write()
因为它可以让我更轻松地显示进度。
在此链接的提示下,我有:
input = open('filename.img', 'rb')
output = open("/dev/sdc", 'wb')
while True:
buffer = input.read(1024)
if buffer:
output.write(buffer)
else:
break
input.close()
output.close()
...但是速度非常慢。或者至少远慢于dd
. (大约慢 4-5 倍)
我玩了一下,注意到改变“缓冲”的字节数对完成速度有很大的影响。例如,将其提高到 2048 似乎只需要一半的时间。也许在这里会过时,但我猜闪存有最佳的一次写入字节数?谁能建议我如何发现这一点?
图像和卡是 1Gb,所以如果可能的话,我非常想回到 dd 大约 5 分钟的时间。我很感激我很可能不会匹配它。
除了反复试验,任何人都可以提出一种优化上述代码的方法并推理它为什么起作用?尤其是 input.read() 例如什么值?
限制之一:python 2.4.3 on linux (centos5) (请不要伤害我)