如果您打开一个要读取的文件,读取它,关闭它,然后重复这个过程(在循环中),python是否会连续访问硬盘驱动器?因为这似乎不是从我的实验中得出的,我想知道为什么。
一个(非常)简单的例子:
while True:
file = open('/var/log/messages', 'r')
stuff = file.read()
file.close()
time.sleep(2)如果我运行此命令,我的硬盘访问LED将亮起一次,然后硬盘将保持休眠状态。这怎麽可能?python是否以某种方式将文件内容保存在RAM中?因为逻辑告诉我它应该每两秒访问一次硬盘。
发布于 2011-07-11 00:45:54
很可能您的操作系统或文件系统足够智能,如果文件在两者之间没有更改,就可以从OS缓存中提供该文件。
发布于 2011-07-11 00:47:00
答案取决于您的操作系统和硬盘类型。大多数情况下,当你从硬盘上访问一些东西时,这些信息被缓存在主内存中,以防你很快再次需要它。根据操作系统使用的替换策略,数据可能会在主内存中停留一段时间或相对较快地被替换。
在某些情况下,您的硬盘会在自己的内存中缓存频繁访问的信息,然后,尽管可能会访问硬盘,但与搜索驱动器盘片相比,硬盘检索信息并将其发送到处理器的速度会更快。
发布于 2011-07-11 00:48:26
Python不缓存,操作系统缓存。您可以使用top找出这些缓存的大小。在第三行中,它将显示类似以下内容:
Mem: 5923332k total, 5672832k used, 250500k free, 43392k buffers这意味着操作系统正在使用大约43MB来缓存最近写入硬盘或从硬盘读取的数据。您可以通过将2或3写入/proc/sys/vm/drop_caches来关闭此缓存。
https://stackoverflow.com/questions/6642384
复制相似问题