如何加快从python对ruby程序(github的语言学家)的重复调用?
我正在使用github来识别未知的源代码文件。在一个如何加快从python对ruby程序(github的语言学家)的重复调用?,python,ruby,subprocess,github-linguist,Python,Ruby,Subprocess,Github Linguist,我正在使用github来识别未知的源代码文件。在一个gem安装github语言学家之后,从命令行运行这个程序速度非常慢。我正在使用python的子流程模块对库存Ubuntu 14安装进行命令行调用 针对空文件运行:语言学家\uuuu init\uuuuu.py大约需要2秒钟(其他文件的结果类似)。我假设这完全是从Ruby启动时开始的。正如@MartinKonecny指出的,这似乎是语言学家项目本身 有没有什么方法可以加快这个过程——或者有没有一种方法可以将调用捆绑在一起 一种可能性是调整语言学家
gem安装github语言学家之后,从命令行运行这个程序速度非常慢。我正在使用python的子流程
模块对库存Ubuntu 14安装进行命令行调用
针对空文件运行:语言学家\uuuu init\uuuuu.py
大约需要2秒钟(其他文件的结果类似)。我假设这完全是从Ruby启动时开始的。正如@MartinKonecny指出的,这似乎是语言学家项目本身
有没有什么方法可以加快这个过程——或者有没有一种方法可以将调用捆绑在一起 一种可能性是调整语言学家程序(),使其在命令行上采用多条路径。当然,它需要一点Ruby,但它可以传递多个文件,而每次都不需要语言学家的启动开销
这样简单的脚本就足够了:
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
似乎不太可能在两秒钟内启动ruby;在我的笔记本电脑上需要0.05秒,这没什么特别的。子进程调用(['ruby','-e','put'hello'])
需要多长时间?我怀疑是ruby解释器,也许是linquist库。@MartinKonecny速度非常快(每次调用约0.01秒),这表明是库本身,而不是ruby解释器。我不知道是语言学家
速度慢,还是图书馆启动了。当然,每当推送一个新的repo时,github本身不会为每个文件花费2秒钟的时间……如果将许多文件传递给它的目录,会发生什么情况?需要多长时间?@J.F.Sebastian脚本一次只需要一个文件(至少从命令行)。任何glob“*”都会失败。我认为它应该从其他Ruby程序调用,而不是从外部运行。但是,我没有尝试将目录作为输入。据我所知,语言学家
可能会接受directory@J.F.Sebastian:事实上,它接受git repo(毕竟这是github软件),因此如果您的代码没有包含在git repo中,它可能无法工作。@nneonno我明白了。它接受repo之外的(单个)文件,但如果我能全局访问repo目录,我会在合适的计算机上尝试。感谢您的脚本,“这么简单的脚本”不是您以前从未看过Ruby代码的时候!