この 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)