这可能是一个愚蠢的问题,但我无法找到正确的答案。我想存储(不要问为什么)a 的二进制表示(2000, 2000, 2000)
零数组写入磁盘,二进制格式。实现这一目标的传统方法是:
with open('myfile', 'wb') as f:
f.write('\0' * 4 * 2000 * 2000 * 2000) # 4 bytes = float32
但这意味着创建一个非常大的字符串,这是根本没有必要的。我知道另外两个选择:
我希望找到类似的东西write(char, ntimes)
(因为它存在于 C 和其他语言中)复制到磁盘上char
ntimes
以 C 速度,而不是以 Python 循环速度,无需在内存上创建如此大的数组。
我不知道你为什么对“Python的循环速度”这么大惊小怪,但是按照这样的方式写
for i in range(2000 * 2000):
f.write('\0' * 4 * 2000) # 4 bytes = float32
将告诉操作系统写入 8000 个 0 字节。后write
返回,在下一个循环运行中再次调用它。
循环的执行速度可能比 C 中的稍慢,但这绝对不会产生任何影响。
如果可以使用稀疏文件,您也可以查找所需文件大小的位置,然后截断文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)