mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-24 23:17:55 +00:00
parallel_alternatives.pod: More tools compared.
This commit is contained in:
parent
62e34af892
commit
2259251575
|
@ -121,6 +121,6 @@ monitorman:
|
||||||
|
|
||||||
testurls:
|
testurls:
|
||||||
mkdir -p urls
|
mkdir -p urls
|
||||||
cd urls && grep -v '(dead)' ../src/* | grep -h -Po 'https?://[^ $$<>")}]+' | perl -pe 's/(>|\{).*//;s/\\-/-/g;s/\\n//g;s/&/&/g;s/&#.*//;'"s/'.*//" | sort -u | egrep -v 'example.com|##|\*\(' | parallel -j0 --timeout 33 --bar --tag --retries 3 neno wget -m -l1 -Q1 '{=$$_=Q($$_)=}'
|
cd urls && grep -v '(dead)' ../src/* | grep -h -Po 'https?://[^ $$<>")}]+' | perl -pe 's/(>|\{).*//;s/\\-/-/g;s/\\n//g;s/&/&/g;s/&#.*//;'"s/'.*//" | grep -Ev 'parallel-(20)?$$|coolwebsite.biz' | sort -u | egrep -v 'example.com|##|\*\(' | parallel -j0 --timeout 33 --bar --tag --joblog joblog --retries 3 neno wget -m -l1 -Q1 '{=$$_=Q($$_)=}'
|
||||||
|
|
||||||
EXTRA_DIST = CITATION CREDITS cc-by-sa.txt fdl.txt
|
EXTRA_DIST = CITATION CREDITS cc-by-sa.txt fdl.txt
|
||||||
|
|
|
@ -869,7 +869,7 @@ monitorman:
|
||||||
|
|
||||||
testurls:
|
testurls:
|
||||||
mkdir -p urls
|
mkdir -p urls
|
||||||
cd urls && grep -v '(dead)' ../src/* | grep -h -Po 'https?://[^ $$<>")}]+' | perl -pe 's/(>|\{).*//;s/\\-/-/g;s/\\n//g;s/&/&/g;s/&#.*//;'"s/'.*//" | sort -u | egrep -v 'example.com|##|\*\(' | parallel -j0 --timeout 33 --bar --tag --retries 3 neno wget -m -l1 -Q1 '{=$$_=Q($$_)=}'
|
cd urls && grep -v '(dead)' ../src/* | grep -h -Po 'https?://[^ $$<>")}]+' | perl -pe 's/(>|\{).*//;s/\\-/-/g;s/\\n//g;s/&/&/g;s/&#.*//;'"s/'.*//" | grep -Ev 'parallel-(20)?$$|coolwebsite.biz' | sort -u | egrep -v 'example.com|##|\*\(' | parallel -j0 --timeout 33 --bar --tag --joblog joblog --retries 3 neno wget -m -l1 -Q1 '{=$$_=Q($$_)=}'
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
|
|
@ -133,6 +133,7 @@ YYYYMMDD=`yyyymmdd`
|
||||||
TAG=MyTag
|
TAG=MyTag
|
||||||
echo "Released as $YYYYMMDD ('$TAG')." | grep MyTag && (STOP;STOP;STOP)
|
echo "Released as $YYYYMMDD ('$TAG')." | grep MyTag && (STOP;STOP;STOP)
|
||||||
echo "$TAG" | grep ' ' && (STOP;STOP;STOP)
|
echo "$TAG" | grep ' ' && (STOP;STOP;STOP)
|
||||||
|
echo "Released as $YYYYMMDD ('$TAG')."
|
||||||
|
|
||||||
git commit -a -m "Released as $YYYYMMDD ('$TAG')"
|
git commit -a -m "Released as $YYYYMMDD ('$TAG')"
|
||||||
git tag -s -u 88888888 -m "Released as $YYYYMMDD ('$TAG')" $TAG
|
git tag -s -u 88888888 -m "Released as $YYYYMMDD ('$TAG')" $TAG
|
||||||
|
@ -148,6 +149,7 @@ git push origin $YYYYMMDD
|
||||||
Update version number + 1
|
Update version number + 1
|
||||||
|
|
||||||
YYYYMMDD=$(echo `yyyymmdd`+1 | bc)
|
YYYYMMDD=$(echo `yyyymmdd`+1 | bc)
|
||||||
|
echo $YYYYMMDD
|
||||||
perl -i -pe "/version/ and s/20\d\d\d\d\d\d/$YYYYMMDD/" src/parallel
|
perl -i -pe "/version/ and s/20\d\d\d\d\d\d/$YYYYMMDD/" src/parallel
|
||||||
perl -i -pe "/version/ and s/20\d\d\d\d\d\d/$YYYYMMDD/" src/sql
|
perl -i -pe "/version/ and s/20\d\d\d\d\d\d/$YYYYMMDD/" src/sql
|
||||||
perl -i -pe "/version/ and s/20\d\d\d\d\d\d/$YYYYMMDD/" src/niceload
|
perl -i -pe "/version/ and s/20\d\d\d\d\d\d/$YYYYMMDD/" src/niceload
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
use strict;
|
use strict;
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
$Global::progname="niceload";
|
$Global::progname="niceload";
|
||||||
$Global::version = 20190122;
|
$Global::version = 20190123;
|
||||||
Getopt::Long::Configure("bundling","require_order");
|
Getopt::Long::Configure("bundling","require_order");
|
||||||
get_options_from_array(\@ARGV) || die_usage();
|
get_options_from_array(\@ARGV) || die_usage();
|
||||||
if($opt::version) {
|
if($opt::version) {
|
||||||
|
|
|
@ -1444,7 +1444,7 @@ sub check_invalid_option_combinations() {
|
||||||
|
|
||||||
sub init_globals() {
|
sub init_globals() {
|
||||||
# Defaults:
|
# Defaults:
|
||||||
$Global::version = 20190122;
|
$Global::version = 20190123;
|
||||||
$Global::progname = 'parallel';
|
$Global::progname = 'parallel';
|
||||||
$Global::infinity = 2**31;
|
$Global::infinity = 2**31;
|
||||||
$Global::debug = 0;
|
$Global::debug = 0;
|
||||||
|
|
|
@ -535,6 +535,7 @@ B<11> xapply -f '[ -f %1 ] && echo %1' List | ...
|
||||||
|
|
||||||
B<11> parallel '[ -f {} ] && echo {}' < List | ...
|
B<11> parallel '[ -f {} ] && echo {}' < List | ...
|
||||||
|
|
||||||
|
https://web.archive.org/web/20160702211113/
|
||||||
http://carrera.databits.net/~ksb/msrc/local/bin/xapply/xapply.html
|
http://carrera.databits.net/~ksb/msrc/local/bin/xapply/xapply.html
|
||||||
|
|
||||||
|
|
||||||
|
@ -545,8 +546,8 @@ very much like GNU B<parallel>. B<apply> does not run jobs in
|
||||||
parallel. B<apply> does not use an argument separator (like B<:::>);
|
parallel. B<apply> does not use an argument separator (like B<:::>);
|
||||||
instead the template must be the first argument.
|
instead the template must be the first argument.
|
||||||
|
|
||||||
Here are the examples from
|
Here are the examples from IBM's Knowledge Center and the
|
||||||
https://www-01.ibm.com/support/knowledgecenter/ssw_aix_71/com.ibm.aix.cmds1/apply.htm
|
corresponding command using GNU B<parallel>:
|
||||||
|
|
||||||
1. To obtain results similar to those of the B<ls> command, enter:
|
1. To obtain results similar to those of the B<ls> command, enter:
|
||||||
|
|
||||||
|
@ -1727,6 +1728,144 @@ file. Output from the jobs mix.
|
||||||
https://github.com/john01dav/spp (Last checked: 2019-01)
|
https://github.com/john01dav/spp (Last checked: 2019-01)
|
||||||
|
|
||||||
|
|
||||||
|
=head2 DIFFERENCES BETWEEN paral AND GNU Parallel
|
||||||
|
|
||||||
|
B<paral> prints a lot of status information and stores the output from
|
||||||
|
the commands run into files. This means it cannot be used the middle
|
||||||
|
of a pipe like this
|
||||||
|
|
||||||
|
paral "echo this" "echo does not" "echo work" | wc
|
||||||
|
|
||||||
|
Instead it puts the output into files named like
|
||||||
|
B<out_#_I<command>.out.log>. To get a very similar behaviour with GNU
|
||||||
|
B<parallel> use B<--results
|
||||||
|
'out_{#}_{=s/[^\sa-z_0-9]//g;s/\s+/_/g=}.log' --eta>
|
||||||
|
|
||||||
|
B<paral> only takes arguments on the command line and each argument
|
||||||
|
should be a full command. Thus it does not use command templates.
|
||||||
|
|
||||||
|
This limits how many jobs it can run in total, because they all need
|
||||||
|
to fit on a single command line.
|
||||||
|
|
||||||
|
B<paral> has no support for running jobs remotely.
|
||||||
|
|
||||||
|
The examples from B<README.markdown> and the corresponding command run
|
||||||
|
with GNU B<parallel> (B<--results
|
||||||
|
'out_{#}_{=s/[^\sa-z_0-9]//g;s/\s+/_/g=}.log' --eta> is omitted from
|
||||||
|
the GNU B<parallel> command):
|
||||||
|
|
||||||
|
paral "command 1" "command 2 --flag" "command arg1 arg2"
|
||||||
|
parallel ::: "command 1" "command 2 --flag" "command arg1 arg2"
|
||||||
|
|
||||||
|
paral "sleep 1 && echo c1" "sleep 2 && echo c2" \
|
||||||
|
"sleep 3 && echo c3" "sleep 4 && echo c4" "sleep 5 && echo c5"
|
||||||
|
parallel ::: "sleep 1 && echo c1" "sleep 2 && echo c2" \
|
||||||
|
"sleep 3 && echo c3" "sleep 4 && echo c4" "sleep 5 && echo c5"
|
||||||
|
# Or shorter:
|
||||||
|
parallel "sleep {} && echo c{}" ::: {1..5}
|
||||||
|
|
||||||
|
paral -n=0 "sleep 5 && echo c5" "sleep 4 && echo c4" \
|
||||||
|
"sleep 3 && echo c3" "sleep 2 && echo c2" "sleep 1 && echo c1"
|
||||||
|
parallel ::: "sleep 5 && echo c5" "sleep 4 && echo c4" \
|
||||||
|
"sleep 3 && echo c3" "sleep 2 && echo c2" "sleep 1 && echo c1"
|
||||||
|
# Or shorter:
|
||||||
|
parallel -j0 "sleep {} && echo c{}" ::: 5 4 3 2 1
|
||||||
|
|
||||||
|
paral -n=1 "sleep 5 && echo c5" "sleep 4 && echo c4" \
|
||||||
|
"sleep 3 && echo c3" "sleep 2 && echo c2" "sleep 1 && echo c1"
|
||||||
|
parallel -j1 "sleep {} && echo c{}" ::: 5 4 3 2 1
|
||||||
|
|
||||||
|
paral -n=2 "sleep 5 && echo c5" "sleep 4 && echo c4" \
|
||||||
|
"sleep 3 && echo c3" "sleep 2 && echo c2" "sleep 1 && echo c1"
|
||||||
|
parallel -j2 "sleep {} && echo c{}" ::: 5 4 3 2 1
|
||||||
|
|
||||||
|
paral -n=5 "sleep 5 && echo c5" "sleep 4 && echo c4" \
|
||||||
|
"sleep 3 && echo c3" "sleep 2 && echo c2" "sleep 1 && echo c1"
|
||||||
|
parallel -j5 "sleep {} && echo c{}" ::: 5 4 3 2 1
|
||||||
|
|
||||||
|
paral -n=1 "echo a && sleep 0.5 && echo b && sleep 0.5 && \
|
||||||
|
echo c && sleep 0.5 && echo d && sleep 0.5 && \
|
||||||
|
echo e && sleep 0.5 && echo f && sleep 0.5 && \
|
||||||
|
echo g && sleep 0.5 && echo h"
|
||||||
|
parallel ::: "echo a && sleep 0.5 && echo b && sleep 0.5 && \
|
||||||
|
echo c && sleep 0.5 && echo d && sleep 0.5 && \
|
||||||
|
echo e && sleep 0.5 && echo f && sleep 0.5 && \
|
||||||
|
echo g && sleep 0.5 && echo h"
|
||||||
|
|
||||||
|
https://github.com/amattn/paral (Last checked: 2019-01)
|
||||||
|
|
||||||
|
|
||||||
|
=head2 DIFFERENCES BETWEEN concurr AND GNU Parallel
|
||||||
|
|
||||||
|
B<concurr> is built to run jobs in parallel using a client/server
|
||||||
|
model.
|
||||||
|
|
||||||
|
The examples from B<README.md>:
|
||||||
|
|
||||||
|
concurr 'echo job {#} on slot {%}: {}' : arg1 arg2 arg3 arg4
|
||||||
|
parallel 'echo job {#} on slot {%}: {}' ::: arg1 arg2 arg3 arg4
|
||||||
|
|
||||||
|
concurr 'echo job {#} on slot {%}: {}' :: file1 file2 file3
|
||||||
|
parallel 'echo job {#} on slot {%}: {}' :::: file1 file2 file3
|
||||||
|
|
||||||
|
concurr 'echo {}' < input_file
|
||||||
|
parallel 'echo {}' < input_file
|
||||||
|
|
||||||
|
cat file | concurr 'echo {}'
|
||||||
|
cat file | parallel 'echo {}'
|
||||||
|
|
||||||
|
B<concurr> deals badly empty input files and with output larger than
|
||||||
|
64 KB.
|
||||||
|
|
||||||
|
https://github.com/mmstick/concurr (Last checked: 2019-01)
|
||||||
|
|
||||||
|
|
||||||
|
=head2 DIFFERENCES BETWEEN lesser-parallel AND GNU Parallel
|
||||||
|
|
||||||
|
B<lesser-parallel> is the inspiration for B<parallel --embed>. Both
|
||||||
|
B<lesser-parallel> and B<parallel --embed> define bash functions that
|
||||||
|
can be included as part of a bash script to run jobs in parallel.
|
||||||
|
|
||||||
|
B<lesser-parallel> implements a few of the replacement strings, but
|
||||||
|
hardly any options, whereas B<parallel --embed> gives you the full
|
||||||
|
GNU B<parallel> experience.
|
||||||
|
|
||||||
|
https://github.com/kou1okada/lesser-parallel (Last checked: 2019-01)
|
||||||
|
|
||||||
|
|
||||||
|
=head2 DIFFERENCES BETWEEN npm-parallel AND GNU Parallel
|
||||||
|
|
||||||
|
B<npm-parallel> can run npm tasks in parallel.
|
||||||
|
|
||||||
|
There are no examples and very little documentation, so it is hard to
|
||||||
|
compare to GNU B<parallel>.
|
||||||
|
|
||||||
|
https://github.com/spion/npm-parallel (Last checked: 2019-01)
|
||||||
|
|
||||||
|
|
||||||
|
=head2 DIFFERENCES BETWEEN machma AND GNU Parallel
|
||||||
|
|
||||||
|
B<machma> runs tasks in parallel. It gives time stamped
|
||||||
|
output. It buffers in RAM. The examples from README.md:
|
||||||
|
|
||||||
|
find . -iname '*.jpg' | machma -- mogrify -resize 1200x1200 -filter Lanczos {}
|
||||||
|
find . -iname '*.jpg' | parallel mogrify -resize 1200x1200 -filter Lanczos {}
|
||||||
|
|
||||||
|
cat /tmp/ips | machma -p 2 -- ping -c 2 -q {}
|
||||||
|
cat /tmp/ips | parallel -j 2 --tag --line-buffer ping -c 2 -q {}
|
||||||
|
|
||||||
|
cat /tmp/ips | machma -- sh -c 'ping -c 2 -q $0 > /dev/null && echo alive' {}
|
||||||
|
cat /tmp/ips | parallel --tag 'ping -c 2 -q {} > /dev/null && echo alive'
|
||||||
|
|
||||||
|
find . -iname '*.jpg' | machma --timeout 5s -- mogrify -resize 1200x1200 -filter Lanczos {}
|
||||||
|
find . -iname '*.jpg' | parallel --timeout 5s mogrify -resize 1200x1200 -filter Lanczos {}
|
||||||
|
|
||||||
|
find . -iname '*.jpg' -print0 | machma --null -- mogrify -resize 1200x1200 -filter Lanczos {}
|
||||||
|
find . -iname '*.jpg' -print0 | parallel --null mogrify -resize 1200x1200 -filter Lanczos {}
|
||||||
|
|
||||||
|
https://github.com/fd0/machma (Last checked: 2019-01)
|
||||||
|
|
||||||
|
|
||||||
=head2 Todo
|
=head2 Todo
|
||||||
|
|
||||||
Url for spread
|
Url for spread
|
||||||
|
@ -1756,14 +1895,8 @@ https://github.com/otonvm/Parallel
|
||||||
|
|
||||||
https://github.com/flesler/parallel
|
https://github.com/flesler/parallel
|
||||||
|
|
||||||
https://github.com/kou1okada/lesser-parallel
|
|
||||||
|
|
||||||
https://github.com/Julian/Verge
|
https://github.com/Julian/Verge
|
||||||
|
|
||||||
https://github.com/amattn/paral
|
|
||||||
|
|
||||||
https://github.com/mmstick/concurr
|
|
||||||
|
|
||||||
|
|
||||||
=head1 TESTING OTHER TOOLS
|
=head1 TESTING OTHER TOOLS
|
||||||
|
|
||||||
|
|
2
src/sql
2
src/sql
|
@ -574,7 +574,7 @@ $Global::Initfile && unlink $Global::Initfile;
|
||||||
exit ($err);
|
exit ($err);
|
||||||
|
|
||||||
sub parse_options {
|
sub parse_options {
|
||||||
$Global::version = 20190122;
|
$Global::version = 20190123;
|
||||||
$Global::progname = 'sql';
|
$Global::progname = 'sql';
|
||||||
|
|
||||||
# This must be done first as this may exec myself
|
# This must be done first as this may exec myself
|
||||||
|
|
Loading…
Reference in a new issue