gpt4 book ai didi

java - 运行 GNU 并行 Java 作业

转载 作者:行者123 更新时间:2023-12-01 20:05:46 24 4
gpt4 key购买 nike

这是使用输入 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

我希望这些作业并行运行

最佳答案

如果您的 myFile.txt 包含数百万行,并且您希望将其拆分为每个 CPU 核心一个 block ,然后在该输入上运行 MyJavaClass,我们假设 MyJavaClass 从 stdin(标准输入)读取并打印到 stdout(标准输出),因此这 3 行看起来像这样:

cat chunk1 | java MyJavaClass > output1
cat chunk2 | java MyJavaClass > output2
cat chunk3 | java MyJavaClass > output3

然后使用 GNU Parallel 看起来像这样:

parallel -a myFile.txt --pipepart --block -1 java MyJavaClass > combined_output

如果 MyJavaClass 采用文件名,则 3 行如下所示:

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

如果 MyJavaClass 输出到文件名,那么这 3 行看起来像这样

java MyJavaClass chunk1 --output-file chunk1.output
java MyJavaClass chunk2 --output-file chunk2.output
java MyJavaClass chunk3 --output-file chunk3.output

然后您可以使用 {#} 作为作业编号,因此是唯一的:

parallel [...] java MyJavaClass {} --output-file {#}.output

关于java - 运行 GNU 并行 Java 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47395981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com