如果你打开一个文件进行阅读,请从中读取,关闭它,然后重复这个过程(循环)python是否会不断访问硬盘?因为它似乎不是我的实验,我想了解原因。
一个(非常)简单的例子:
while True:
file = open('/var/log/messages', 'r')
stuff = file.read()
file.close()
time.sleep(2)
如果我运行此操作,我的硬盘驱动器访问LED将亮起一次,然后硬盘驱动器仍处于休眠状态。这怎么可能? python以某种方式保存存储在RAM中的文件内容吗?因为逻辑会告诉我它应该每两秒访问一次硬盘驱动器。
答案 0 :(得分:3)
如果文件之间没有发生变化,那么您的操作系统或文件系统可能非常智能,可以从操作系统缓存中提供文件。
答案 1 :(得分:3)
答案取决于您的操作系统和您拥有的硬盘类型。大多数情况下,当您从驱动器访问某些内容时,信息将缓存在主内存中,以备您很快再次需要时使用。根据操作系统使用的替换策略,数据可能会在主内存中保留一段时间或相对较快地更换。
在某些情况下,您的硬盘驱动器会将频繁访问的信息缓存在自己的内存中,然后在访问驱动器时,它会更快地检索信息并将其发送到处理器,而不是必须搜索驱动器盘片。
答案 2 :(得分:2)
Python不会缓存,操作系统会缓存。您可以使用top
找出这些缓存的大小。在第三行中,它会说:
Mem: 5923332k total, 5672832k used, 250500k free, 43392k buffers
这意味着操作系统正在使用大约43MB来缓存最近写入或从硬盘读取的数据。您可以通过将2
或3
写入/proc/sys/vm/drop_caches
来关闭此缓存。