这是使用输入myFile.txt
执行java作业的正确方法吗?我想要做的是使用args [0]中的输入运行MyJavaClass程序,但是,我想在我的机器上在多个内核而不是集群上本地运行它。
parallel java MyJavaClass ::: myFile.txt
编辑:
我想要完成的是:
java MyJavaClass arg1 arg2 arg3
java MyJavaClass arg4 arg5 arg6
java MyJavaClass arg7 arg8 arg9
我希望这些工作能够并行运行
答案 0 :(得分:1)
parallel java MyJavaClass ::: myFile.txt
将运行:
java MyJavaClass myFile.txt
鉴于:
parallel java MyJavaClass ::: myFile1.txt myFile2.txt
将并行运行:
java MyJavaClass myFile1.txt
java MyJavaClass myFile2.txt
答案 1 :(得分:1)
如果文件myargs
包含:
arg1
arg2
arg3
arg4
arg5
arg6
arg7
arg8
arg9
你要运行:
java MyJavaClass arg1 arg2 arg3
java MyJavaClass arg4 arg5 arg6
java MyJavaClass arg7 arg8 arg9
然后你可以这样做:
parallel -N3 java MyJavaClass :::: myargs
答案 2 :(得分:1)
如果<?php
date_default_timezone_set('UTC');
$lastDay = date("Y-m-d");
while (true) {
$now = date("Y-m-d");
if ($now !== $lastDay) {
$lastDay = $now;
print("First loop of the new day");
}
sleep(1);
}
?>
有数百万行,并且您希望每个CPU核心拆分为一个块,然后在该输入上运行myFile.txt
,我们假设MyJavaClass
读取从标准输入(标准输入)和打印到标准输出(标准输出),所以3行看起来像这样:
MyJavaClass
然后使用GNU Parallel看起来像这样:
cat chunk1 | java MyJavaClass > output1
cat chunk2 | java MyJavaClass > output2
cat chunk3 | java MyJavaClass > output3
如果parallel -a myFile.txt --pipepart --block -1 java MyJavaClass > combined_output
取代文件名,那么3行看起来像这样:
MyJavaClass
然后这可能有效:
java MyJavaClass chunk1 > output1
java MyJavaClass chunk2 > output2
java MyJavaClass chunk3 > output3
如果# --fifo is fast, but may not work if MyJavaClass seeks into the file
parallel -a myFile.txt --pipepart --fifo --block -1 java MyJavaClass {} > combined_output
# --cat creates temporary files
parallel -a myFile.txt --pipepart --cat --block -1 java MyJavaClass {} > combined_output
输出到文件名,那么3行看起来像这样
MyJavaClass
然后您可以使用java MyJavaClass chunk1 --output-file chunk1.output
java MyJavaClass chunk2 --output-file chunk2.output
java MyJavaClass chunk3 --output-file chunk3.output
作为工作号码,因此是唯一的:
{#}