Python - 打开文件时的HardDrive访问

时间:2011-07-10 16:42:19

标签: python hard-drive

如果你打开一个文件进行阅读,请从中读取,关闭它,然后重复这个过程(循环)python是否会不断访问硬盘?因为它似乎不是我的实验,我想了解原因。

一个(非常)简单的例子:

while True:
    file = open('/var/log/messages', 'r')
    stuff = file.read()
    file.close()
    time.sleep(2)

如果我运行此操作,我的硬盘驱动器访问LED将亮起一次,然后硬盘驱动器仍处于休眠状态。这怎么可能? python以某种方式保存存储在RAM中的文件内容吗?因为逻辑会告诉我它应该每两秒访问一次硬盘驱动器。

3 个答案:

答案 0 :(得分:3)

如果文件之间没有发生变化,那么您的操作系统或文件系统可能非常智能,可以从操作系统缓存中提供文件。

答案 1 :(得分:3)

答案取决于您的操作系统和您拥有的硬盘类型。大多数情况下,当您从驱动器访问某些内容时,信息将缓存在主内存中,以备您很快再次需要时使用。根据操作系统使用的替换策略,数据可能会在主内存中保留一段时间或相对较快地更换。

在某些情况下,您的硬盘驱动器会将频繁访问的信息缓存在自己的内存中,然后在访问驱动器时,它会更快地检索信息并将其发送到处理器,而不是必须搜索驱动器盘片。

答案 2 :(得分:2)

Python不会缓存,操作系统会缓存。您可以使用top找出这些缓存的大小。在第三行中,它会说:

Mem:   5923332k total,  5672832k used,   250500k free,    43392k buffers

这意味着操作系统正在使用大约43MB来缓存最近写入或从硬盘读取的数据。您可以通过将23写入/proc/sys/vm/drop_caches来关闭此缓存。