L oop с одним экземпляром go -exiftool зависает на большом количестве файлов - PullRequest
1 голос
/ 08 июля 2020

Я зацикливаю большие ~ 10k файлов, используя go -exiftool. Я использую один экземпляр go -exiftool для получения информации обо всех необходимых файлах. Этот код вызывается 10k раз в l oop, где файл всегда разный.

fileInfos := et.ExtractMetadata(file)

После ~ 7k циклов программа зависает. Я отладил go -exiftool и обнаружил, что он зависает в https://github.com/barasher/go-exiftool/blob/master/exiftool.go#L121 в строке:

fmt.Fprintln(io.WriteCloser, "-execute")

, если я правильно понял, io.WriteCloser имеет экземпляр exec.Command(binary, initArgs...).StdinPipe()

итак, вопросы:

  1. Есть ли у exe c. Команда имеет лимит выполнения?
  2. Если 1) - нет, в чем может быть причина еще ?
  3. Это зависит от размеров файлов? Я попробовал другую папку, и она работала с файлами 35k, а затем зависла. Как это проверить?

ОБНОВЛЕНИЕ: Я пытался запустить тот же файл в циклах по 10 тыс. Работает отлично. Похоже, не хватает памяти, не так ли? Не вижу проблем в графике системной памяти. Или stdin переполнен. Не знаю, как это проверить.

...