parallelmacht 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 parallelwerden 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 20ist 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 --shufwas wird den Job , um mischen .