「猫」のようなPythonジェネレーターを書いています。私の具体的な使用例は、「grep のような」操作です。条件が満たされた場合にジェネレーターから抜け出せるようにしたい:
summary={}
for fn in cat("filelist.dat"):
for line in cat(fn):
if line.startswith("FOO"):
summary[fn] = line
break
そのため、発生したbreak
場合、cat()
ジェネレーターがファイルハンドルを終了して閉じる必要がありますfn
。
合計 30 GB のデータを含む 100k ファイルを読み取る必要があり、FOO
キーワードはヘッダー領域で発生するため、この場合、cat()
関数がファイルの読み取りをできるだけ早く停止することが重要です。
この問題を解決する方法は他にもありますが、開いているファイル ハンドルを持つジェネレーターを早期に終了する方法を知りたいと思っています。おそらく、Python はすぐにそれらをクリーンアップし、ジェネレーターがガベージ コレクションされるとそれらを閉じますか?
ありがとう、
イアン