@Jinpeng był na dobrej drodze z GNU Parallel , tylko nie implementacją.
Przykład: Uruchom 10 równoległych instancji programu, z każdym wątkiem uruchamiającym program tylko raz:
parallel -j10 './myprog argument1 argument2 #' ::: {1..10}
Przykład: Uruchom 10 równoległych wątków, z których każdy z tych wątków będzie działał bez końca:
parallel -j10 'while true ; do ./myprog argument1 argument2 ; done #' ::: {1..10}
Możesz łatwo skalować to do setek wątków, zastępując 10
w moich przykładach.
parallel -j200 ... ::: {1..200}
Jeśli twój program generuje jakieś standardowe komunikaty i chcesz je widzieć tak, jak są tworzone (zamiast domyślnego, który je zestawia), --ungroup
opcja równoległa może być użyteczna.
parallel --ungroup ...
Jeśli uruchamiasz wiele wątków ze stacji roboczej i nie chcesz, aby wszystko przestało odpowiadać, rozważ nice
rozważenie poddrzewa całego procesu w czasie uruchamiania.
nice -n19 parallel ...
Dygresja, GNU równoległy nie jest zazwyczaj instalowany domyślnie, ale zazwyczaj w normalnych repo opakowania, więc po prostu zainstalować go jak każdy inny pakiet: dnf install parallel
, apt-get install parallel
, brew install parallel
, itd.
myprog
instancje potomne i agreguje dla nich swoje wyniki.