ffprobe производит ссылку на память - PullRequest
0 голосов
/ 27 апреля 2020

Я работаю над сценарием python для расчета продолжительности всех видеофайлов в каталоге (и подкаталогах, ссылках и т. Д. c.).

Все работает, моя единственная проблема заключается в что следующий код производит утечку памяти. Я использую эту функцию для каждого медиа-файла, чтобы получить продолжительность. И выделенная память значительно увеличивается. Как 50 мегабайт каждую секунду. Когда функция возвращает значение, память не освобождается. Даже после закрытия всех программ или выхода из системы Windows память не исчезла. Только перезапуск поможет.

def probe(vid_file_path):
    with subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True) as proc:
       cmd = ["ffprobe", "-loglevel", "quiet", "-print_format", "json", "-show_format", "-show_streams", vid_file_path]
       out, err = proc.communicate()
       return json.loads(out)

Я часами пытался выяснить, была ли проблема с ffprobe или с подпроцессом. И я думаю, что это ffprobe.

Если я сделаю это:

cd "<goto ffprobe directory>"
:start
ffprobe -show_streams "<a video file>"
goto start

в пакетном файле, я вижу, что память тоже увеличивается.

EDIT1: Если вы хочу проверить мой python скрипт см. здесь: https://pastebin.com/NewBgwia

...