在Windows上的Python中,我可以通过以下方式创建一个大文件
from mmap import mmap
f = open('big.file', 'w')
f.close()
f = open('big.file', 'r+')
m = mmap(f.fileno(), 10**9)
现在big.file大约是1千兆字节。然而,在Linux上,这将返回ValueError: mmap length is greater than file size。
有没有办法在Linux上获得与
如果我需要将一个大文件从分配的内存写到磁盘,最有效的方法是什么?
目前,我使用的内容大致如下:
char* data = static_cast<char*>(operator new(0xF00000000)); // 60 GB
// Do something to fill `data` with data
std::ofstream("output.raw", std::ios::binary).
write(data, 0xF00000000);
但我不确定考虑到各种缓冲机制等因素,最直接的方法是否也是最有效的。
我使用的是Windows 7
我有一个非常大的磁盘驱动器(2TB),但内存不是很大(8GB)。我希望能够在我的磁盘文件系统上的一个大文件(~200 on )上运行一些大数据实验。我知道这将是非常昂贵的磁盘带宽,但我不介意高I/O使用。
如何将这个巨大的文件加载到C++数组中,以便在我选择的位置执行对文件的读和写操作?mmap是否为此目的而工作?我应该使用哪些参数选项来完成此操作?我不想在运行我的程序的任何时候触发OOM杀手。
我知道mmap支持文件支持和匿名映射,但我不完全确定使用哪种映射。那么在使用私有映射还是共享映射之间呢?