系统相关
首页 > 系统相关> > python – os.walk泄漏内存吗?

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