我很好奇在读取文件时使用什么内存资源。块存储在哪里?是堆,因此是RAM?
with open("file.txt", "r") as fd:
block = fd.read(64)
答案 0 :(得分:4)
内存块(与block
变量不同)可能在某个时候存储在RAM中,但不在您的进程堆中。操作系统做了一些非常复杂的事情(有关更多信息,请参见信息虚拟内存),以赋予每个进程自己的内存部分。操作系统内核也占很大一部分。
现在,read
是一个系统调用,这意味着您的处理器将方向盘移交给内核来完成其工作。然后,内核以所需的任何方式处理从磁盘到内存的复制,但是只有您请求的数据才会存储在进程的内存块中。在您的示例中,内核将以某种方式获取该块,可能将其存储在RAM中的某个位置(但它还将利用处理器缓存来允许稍后更快地访问),但唯一的保证是最高 64字节的字节将存储在堆上的变量中(由名称block
指向)。