python – os.walk泄漏内存吗?
作者:互联网
当我在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中发现的内存泄漏;见Huge memory leak in repeated os.path.isdir calls?
您可以使用Unicode编码的路径字符串自行测试 – 应该没有泄漏.
os.path.isdir用于os.walk实现:
islink, join, isdir = path.islink, path.join, path.isdir
try:
names = listdir(top)
except error, err:
if one rror is not None:
one rror(err)
return
dirs, nondirs = [], []
for name in names:
if isdir(join(top, name)):
dirs.append(name)
else:
nondirs.append(name)
标签:python,memory-leaks,os-walk 来源: https://codeday.me/bug/20190625/1288410.html