gpt4 book ai didi

ruby - 使用命名管道时出现 "Too many open files"错误

转载 作者:太空宇宙 更新时间:2023-11-03 16:13:19 26 4
gpt4 key购买 nike

我正在运行 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 方法或任何东西,afaik。

最佳答案

我没有找到问题的根本原因,但是ulferts帮助我找到了我可以接受的解决方法。

与其让 RMagick 打开文件本身,我们应该自己处理它,然后使用 .from_blob 创建 Magick::Image 实例。

while f = File.read(image_pipe)
image = Image.from_blob(f)
# ... do stuff with image.
end

关于ruby - 使用命名管道时出现 "Too many open files"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54608685/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com