【问题标题】:reduction in the lifetime of a hard drive from using os.walk使用 os.walk 缩短硬盘驱动器的使用寿命
【发布时间】:2013-05-05 18:05:42
【问题描述】:

在整个外部磁盘驱动器的计时器上运行以下脚本有什么问题吗?

EXTERNAL_DRIVE_DIRECTORY = "E:\Files"
# get all of the files in a top level directory of a hard drive
def get_set_of_all_files():
    set_of_files = set()
    for root, dirs, files in os.walk(EXTERNAL_DRIVE_DIRECTORY):
        for f in files:
            # get file name without file extension
            f = os.path.splitext(f)[0]
            set_of_files.add(f)
    return set_of_episodes

这个想法是检查硬盘驱动器上的所有文件与另一组文件可能存在或不存在于硬盘驱动器中的文件。 因此,脚本可能会按时间间隔运行(例如,每 10 分钟一次)。

这会对硬盘驱动器造成难以置信的负担吗?我听说磁盘只能读/写这么多次,所以看起来这可能会减少磁盘的寿命。您从这段代码中看到的寿命减少是否异常大?

【问题讨论】:

    标签: python operating-system hardware


    【解决方案1】:

    这取决于操作系统、文件系统和可用内存量。
    我只能说基于 UNIX 的操作系统——它们中的大多数会在第一次运行时尝试将最近访问的文件的元数据缓存在内存中,并且很可能在后续运行时甚至不会向硬盘发出请求。

    【讨论】:

    • 这很有趣。所以,即使文件发生变化,如果函数get_set_f_all_files() 被调用,比方说,while 循环与time.sleep(1000) 作为最后调用的函数,该函数将返回相同的集合?即 - 无论第一次调用后调用多少次,集合都不会改变?这似乎很成问题。
    • 确实这种缓存会有问题,因此操作系统使用不同的方法:在每次更新底层存储时,缓存本身也会更新/失效。因此,在您删除/创建文件的情况下,缓存内容也会发生变化。
    猜你喜欢
    • 2011-06-10
    • 2011-10-12
    • 2011-08-06
    • 1970-01-01
    • 2016-11-02
    • 2012-02-08
    • 2017-01-27
    • 1970-01-01
    • 2012-08-07
    相关资源
    最近更新 更多