Я использую реализацию Python Jython 2,51 написать скрипт, который неоднократно вызывающую другой процесс с помощью subprocess.Popen
и использует PIPE
к трубе stdout
и stderr
к родительскому процессу и stdin
к дочерний процесс. После нескольких сотен циклов итераций я, похоже, исчерпал дескрипторы файлов.Jython: subprocess.Popen исчерпывает файловых дескрипторов
Python subprocess documentation упоминает очень мало об освобождении дескрипторов файлов, отличных от close_fds
опции, которые не описаны очень ясно (почему должен там быть никаких файловых дескрипторов, кроме 0, 1 и 2 открытых в первую очередь?). Я предполагаю, что в CPython подсчет ссылок заботится о проблеме освобождения ресурсов. Каков правильный способ убедиться, что все дескрипторы освобождаются, когда все делается с объектом Popen
в Jython?
Редактировать: На всякий случай это имеет значение, это многопоточная программа, поэтому существует несколько процессов Popen
, работающих одновременно.