Python - tempfile.mkstemp()でハマった
tempfileモジュールのmkstemp()はos.open()で開きっぱなしのファイルディスクリプタを返してくるので、閉じないといけない。
import os import tempfile fd, path = tempfile.mkstemp() os.close(fd)
ときどき1022回以上mkstempを呼ぶスクリプトで、かなり離れた行に別のopenがあり、そこで「IOError: [Errno 24] Too many open files」と言われるもんだから、かなりハマった。
閉じてますがなにか?とひたすらコードを見直したあげく、lsof -p
ドキュメントをよく読むと
mkstemp() は開かれたファイルを扱うための OS レベルの値とファイルの絶対パス名が順番に並んだタプルを返します。
とあるものの、ええ?閉じてくださいよ、と思わなくもない。
自分でopenしたら気をつけますが。