Wenn Sie myFile.txt
mit Millionen von Zeilen, und Sie wollen diese Aufspaltung in einen Chunk pro CPU-Kern, und dann MyJavaClass
an diesem Eingang laufen, und wir gehen davon aus, dass MyJavaClass
lesen
cat chunk1 | java MyJavaClass > output1
cat chunk2 | java MyJavaClass > output2
cat chunk3 | java MyJavaClass > output3
dann sieht es aus wie diese mit GNU Parallel:
0 von stdin (Standardeingabe) und druckt auf stdout (Standardausgabe), so dass die drei Zeilen wie folgt aussehen würde
Wenn MyJavaClass
stattdessen einen Dateinamen nimmt so die 3 Zeilen wie folgt aussehen:
java MyJavaClass chunk1 > output1
java MyJavaClass chunk2 > output2
java MyJavaClass chunk3 > output3
dann kann diese Arbeit:
# --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
Wenn MyJavaClass
Ausgänge auf einen Dateinamen, so dass die drei Zeilen wie folgt aussehen Diese
java MyJavaClass chunk1 --output-file chunk1.output
java MyJavaClass chunk2 --output-file chunk2.output
java MyJavaClass chunk3 --output-file chunk3.output
können Sie dann verwenden Sie {#}
ist die Jobnummer und ist daher eindeutig:
Möchten Sie N Kopien desselben Jobs parallel ausführen, wobei N die Anzahl der Kerne in Ihrer CPU ist? Wenn ja, ja. –
Können Sie drei Beispiele für Befehle angeben, die von GNU Parallel ausgeführt werden sollen? Es macht es einfacher zu verstehen, was Sie erreichen möchten. –
Was ich versuche zu tun ist, 10 Kopien des gleichen Jobs mit verschiedenen Eingaben parallel zu laufen, so würde ich gerne MyJavaClass mit myFile1, myFile2, ...., myFile10 als Eingabe parallel ausführen – Alk