parallel
macht eigentlich keine Vorbehalte, die Ausgabe in Ordnung zu bringen. Es kommt einfach so vor, dass Jobs normalerweise klein genug sind und gleichmäßig in der CPU-Zeit aufgeteilt werden, um in der richtigen Reihenfolge herauszukommen. Sie bemerken es mehr, wenn viele Jobs ausgeführt werden oder die Dauer ihrer Aufgaben sehr unterschiedlich ist.
Standardmäßig parallel
werden nur so viele Jobs ausgeführt, wie Ihre CPU über Kerne verfügt. Auf den meisten Laptops und Desktops sind das 2-4, was bedeutet, dass nur ein paar Jobs gleichzeitig ausgeführt werden. Sie können das mit -j erhöhen.
Hier ist ein Beispiel, um zu demonstrieren, dass der Auftrag nicht in der Reihenfolge ausgegeben wird, in der er gesendet wurde.
seq 20 | parallel -j 20 'sleep $[RANDOM % 20]; echo '
Ausgabe auf meinem System war (Ihre wird wahrscheinlich anders sein)
7
3
13
20
8
16
2
4
18
17
1
5
9
14
12
6
10
19
11
15
seq 20
ist ein Befehl, der die Nummern 1-20 ausgibt. Ich leite das parallel und sage dann, dass 20 Jobs gleichzeitig ausgeführt werden sollen, um sicherzustellen, dass alle gleichzeitig gestartet werden. 'sleep $[\[RANDOM][1] % 20];
verwendet sleep plus einen zsh-Parameter, der eine Zufallszahl zwischen 1 und 20 zurückgibt. Jeder Job schläft diese zufällige Menge und dann echo
. Sobald der Job wiedergegeben wird, erhalten Sie sofort die Ausgabe von parallel.
Sie könnten auch etwas ähnliches mit tun , parallel --shuf
was wird den Job , um mischen .