【发布时间】:2015-10-03 14:14:27
【问题描述】:
我有一个 perl 程序,它接受两个参数,字典文件由 英文单词每行一个,并且包含连接单词的文件也每行一个 行,类似这样:
lovetoplayguitar
...
...
所以通常程序是这样使用的:
perl ./splitwords.pl words-en.txt bigfile.txt
它将结果打印到stdout。
我试图通过GNU parallel 像这样:
time parallel -n 2 -j8 -k perl ./splitwords.pl {1} {2} ::: words-en.txt bigfile.txt > splitted.txt
但它不能那样工作.. 到目前为止尝试了许多组合但无法 使用并行运行它。
编辑
实际上这似乎有效,但它只使用一个核心..?为什么..?
【问题讨论】:
-
您希望 GNU Parallel 运行什么? GNU Parallel 不能神奇地并行化您的程序,但它可以运行具有不同参数的程序的多个副本。你希望它用什么参数来运行你的程序?
-
这是我面临的一个问题,因为这两个参数是两个文件名,它们被传递给那个 ./splitwords.pl 程序,所以它只接受这两个,它们是相同的
-
如果您不知道如何手动将任务拆分为更小的任务,那么让 GNU Parallel 为您完成几乎是不可能的:它无法猜测如何并行化任务。看来您认为任务可以并行化,您能解释一下如何将任务拆分为更小的作业吗?
-
我能想到的唯一方法是,将大文件分割成更小的块,然后将它们作为第二个参数并行输入,第一个参数保持不变,因为它包含字典
标签: gnu-parallel