首页 > 解决方案 > Python读取文件时使用什么内存资源

问题描述

我很好奇读取文件时使用了什么内存资源。块存储在哪里?它是堆,因此是RAM?

with open("file.txt", "r") as fd:
    block = fd.read(64)

标签: python

解决方案


内存块(与变量block不同)可能在某个时候存储在 RAM 中,但不在您的进程堆中。操作系统做了一些非常复杂的事情(查看信息虚拟内存以获得更多信息)为每个进程提供自己的内存部分。操作系统内核也占了很大一部分。

现在,read是一个系统调用,这意味着您的处理器将方向盘交给内核来完成它的工作。然后内核以它想要的任何方式处理从磁盘到内存的复制,但只有您请求的数据才会存储在进程的内存块中。在您的示例中,内核会以某种方式获取块,可能将其存储在 RAM 中的某个位置(但它也会利用处理器缓存以允许稍后更快地访问),但唯一的保证是最多64 个字节将存储在堆上的变量(由 name 指向block)。


推荐阅读