gpt4 book ai didi

Python shutdown.rmtree 调用花费了极长的时间

转载 作者:太空宇宙 更新时间:2023-11-03 21:48:06 25 4
gpt4 key购买 nike

我目前有一个Python 程序在完成删除执行时创建的大量文件时调用shutil.rmtree。此调用大约需要 20 多秒。我已经使用 cProfile 对此进行了分析,几乎所有时间都花在了 posix.remove 调用上。

如果我不删除这些文件作为 Python 程序的一部分,而是在程序执行完成后对文件夹调用 rm -rf,则 rm -rf > 在 <5 秒内执行。

有什么特别的因素可能导致执行时间如此巨大的差异吗?

最佳答案

shutil.rmtree 在它遍历的每个文件条目上都会调用 os.stat 来确定它是文件还是目录,这是巨大的浪费列出目录时已获取该信息的时间。

此信息是 os.walk 函数所利用的(有关详细信息,请参阅 PEP-471),您可以使用它自己实现 rmtree:

import os
def rmtree(directory):
for root, dirs, files in os.walk(directory, topdown=False):
for file in files:
os.remove(os.path.join(root, file))
for dir in dirs:
os.rmdir(os.path.join(root, dir))
os.rmdir(directory)

关于Python shutdown.rmtree 调用花费了极长的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52324305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com