Я запускаю 2 скрипта и через некоторое время получаю Too many open files @ error/blob.c/ImageToFile/1832
.
Упрощенная версия первых скриптов.Он должен читать изображения, записанные в image_pipe, обрабатывать их и записывать в ocr_pipe для распознавания OCR.
# creates 2 named pipes
File.mkfifo(image_pipe) rescue nil
File.mkfifo(ocr_pipe) rescue nil
while image = Image.read(image_pipe)
# do some stuff with `image`...
end
Второй сценарий использует ffmpeg для извлечения кадров из видео и записи их в image_pipe
# image_pipe is the same as the script above.
(14..movie.duration).step(0.5) do
`/usr/local/bin/ffmpeg [some options...] #{image_pipe}`
end
Я думаю, что проблема в том, что RMagick открывает слишком много файловых дескрипторов при чтении изображений в цикле первого сценария, но я не уверен, как этого избежать.Класс Magick::Image
не имеет метода close
или чего-либо еще, афаик.