当我在 Windows 中运行这个 Python 脚本时,这个过程会增长,而且看不到明显的结束:
import os
for i in xrange(1000000):
for root, dirs, files in os.walk(r"c:\windows"):
pass
我是不是误会了什么?(我使用的是 Python 2.7.3。)
当我在 Windows 中运行这个 Python 脚本时,这个过程会增长,而且看不到明显的结束:
import os
for i in xrange(1000000):
for root, dirs, files in os.walk(r"c:\windows"):
pass
我是不是误会了什么?(我使用的是 Python 2.7.3。)
这是由于在 os.path.isdir 中发现内存泄漏;在重复的 os.path.isdir 调用中看到巨大的内存泄漏? 您可以使用 Unicode 编码的路径字符串自行测试 - 应该没有泄漏。
os.path.isdir 用于 os.walk 实现:
islink, join, isdir = path.islink, path.join, path.isdir
try:
names = listdir(top)
except error, err:
if onerror is not None:
onerror(err)
return
dirs, nondirs = [], []
for name in names:
if isdir(join(top, name)):
dirs.append(name)
else:
nondirs.append(name)