GNU parallel
New to topics? Read the documentation here!
The author Ole Tange answers every question about it on Stack Exchange. What a legend!
This program makes you respect GNU make a bit more. Good old make with
-j
can not only parallelize, but also take in account a dependency graph.Some examples under:
man parallel_exampes
To get the input argument explicitly job number use the magic string
sample output:
{}
, e.g.:
printf 'a\nb\nc\n' | parallel echo '{}'
a
b
c
To get the job number use
sample output:
{#}
as in:
printf 'a\nb\nc\n' | parallel echo '{} {#}'
a 1
b 2
c 3
c 3
{%}
contains which thread the job running in, e.g. if we limit it to 2
threads with -j2
:
printf 'a\nb\nc\nd\n' | parallel -j2 echo '{} {#} {%}'
a 1 1
b 2 1
c 3 2
d 4 1
%
symbol in many programming languages such as C.To pass multiple CLI argments per command you can use
sample output:
-X
e.g.:
printf 'a\nb\nc\nd\n' | parallel -j2 -X echo '{} {#} {%}'
a b 1 1
c d 2 2