如何加速从 python 重复调用 ruby 程序(github 的语言学家)?

How do I speed up repeated calls a ruby program (github's linguist) from python?

我正在使用 github 的 linguist 来识别未知的源代码文件。 运行 在 gem install github-linguist 之后从命令行执行此操作非常慢。我正在使用 python 的 subprocess 模块对股票 Ubuntu 14 安装进行命令行调用。

运行 针对空文件:linguist __init__.py 大约需要 2 秒(其他文件的结果类似)。 我假设这完全是从 Ruby 的启动时间开始的。正如@MartinKonecny 指出的那样,它似乎是语言学家程序本身。

有什么方法可以加快这个过程——或者有什么方法可以将调用捆绑在一起吗?

一种可能性是调整 linguist 程序 (https://github.com/github/linguist/blob/master/bin/linguist) 在命令行上采用多个路径。当然,它需要一些 Ruby 的处理,但它可以传递多个文件,而无需 Linguist 每次的启动开销。

一个这么简单的脚本就足够了:

require 'linguist/file_blob'
ARGV.each do |path|
  blob = Linguist::FileBlob.new(path, Dir.pwd)
  # print out blob.name, blob.language, blob.sloc, etc.
end