Когда я запускаю этот скрипт Python в Windows, процесс растет без видимого конца:
import os
for i in xrange(1000000):
for root, dirs, files in os.walk(r"c:\windows"):
pass
Я что-то неправильно понимаю? (Я использую Python 2.7.3.)
Когда я запускаю этот скрипт Python в Windows, процесс растет без видимого конца:
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)
C:\windows
- это большой график для ходьбы, верно? Довольно глубоко. Очень глубоко. Как рост процесса соотносится с утечкой памяти? - person CppLearner   schedule 21.09.2012