Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何加快从python对ruby程序(github的语言学家)的重复调用?_Python_Ruby_Subprocess_Github Linguist - Fatal编程技术网

如何加快从python对ruby程序(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指出的,这似乎是语言学家项目本身 有没有什么方法可以加快这个过程——或者有没有一种方法可以将调用捆绑在一起 一种可能性是调整语言学家

我正在使用github来识别未知的源代码文件。在一个
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代码的时候!