Różne przykłady prac równoległych
W tej części samouczka przedstawiono różne sposoby uruchamiania zadań równoległych z wykorzystaniem pętli „for”.
Przykład 1: Uruchom zadania równoległe przy użyciu pętli „For”.
Użycie pętli „for” jest prostszym sposobem wykonywania zadań równoległych w skrypcie Bash. Utwórz plik Bash za pomocą następującego skryptu, który uruchamia pętlę „for” 10000 razy i wypisuje liczbę po powtórzeniu 1000 razy. To zadanie jest wykonywane równolegle przy użyciu pętli „for”.
#!/bin/bash
#Iteruj pętlę, aż osiągnie 10000
Do wartość W ` nast 0 1000 10000 ` ;
Do
#Drukuj co tysięczny numer
Echo $val
zrobione
Po wykonaniu skryptu pojawia się następujący wynik. Na wyjściu drukowanych jest 10 liczb z przedziału od 0 do 10000:
Przykład 2: Uruchamianie zadań równoległych przy użyciu zagnieżdżonej pętli „For”.
Utwórz plik Bash za pomocą następującego skryptu, który uruchamia zagnieżdżoną pętlę „for”, która generuje numer seryjny przy użyciu znaków alfabetu od „A” do „C” i cyfr od 1 do 3. W pierwszej iteracji zewnętrznej pętli i po zakończenie iteracji pętli wewnętrznej, „A1. CodeIgniter”, „A2. Laravel” i „A3. CakePHP” są drukowane. W drugiej iteracji pętli zewnętrznej i po zakończeniu iteracji pętli wewnętrznej „B1. Wyrocznia”, „B2. MySQL” i „B3. SQL” są drukowane. W trzeciej iteracji pętli zewnętrznej i po zakończeniu iteracji pętli wewnętrznej „C1. CSS”, „C2. JQuery” i „C3. JavaScript” są drukowane.
#Pętla zewnętrzna
Do alfa W { AC }
Do
#Pętla wewnętrzna
Do numer W { 1 .. 3 }
Do
#Wydrukuj dane wyjściowe na podstawie warunku
Jeśli [ $alfa == 'A' ] ; Następnie
listatablic = ( „Zapalacz kodu” „Laravel” „CiastoPHP” )
Elif [ $alfa == 'B' ] ; Następnie
listatablic = ( 'Wyrocznia' „MySQL” „SQL” )
Elif [ $alfa == 'C' ] ; Następnie
listatablic = ( „CSS” „JQuery” „JavaScript” )
Być
Echo ' $alfa $liczba . ${tablicaLista[$liczba-1]} '
zrobione
zrobione
Po wykonaniu skryptu pojawia się następujący komunikat:
Przykład 3: Uruchom zadania równoległe za pomocą pętli „For” i polecenia „Czekaj”.
Polecenie „wait” jest bardzo przydatnym poleceniem Bash, które służy do oczekiwania na zakończenie jednego zadania, gdy uruchomionych jest wiele zadań. Jeśli uruchomionych jest mniej zadań, polecenie „wait” uruchamia asynchronicznie nowe zadanie. Utwórz plik Bash za pomocą następującego skryptu, który uruchamia zadanie w tle wewnątrz zagnieżdżonej pętli „for”. Polecenie „czekaj” służy do oczekiwania na zakończenie wszystkich procesów potomnych. Polecenia „date” i „sleep” są wykonywane jako proces w tle.
#Pętla zewnętrznaDo I W { 1 .. 2 }
Do
#Pętla wewnętrzna
Do J W { 1 .. 3 }
Do
Jeśli test ' $(prace | wc -l) ' -ge 2 ; Następnie
Czekać -N
Być
#Proces w tle
{
data
spać 1
} &
zrobione
zrobione
Po wykonaniu skryptu pojawia się następujący wynik. Bieżąca data i godzina są drukowane 6 razy z procesu w tle, aby wykonać iterację zagnieżdżonych pętli „for” 2×3=6 razy:
Przykład 4: Różnice między biegami sekwencyjnymi i równoległymi
Utwórz plik Bash za pomocą następującego skryptu, który pokazuje różnice między przebiegiem sekwencyjnym a przebiegiem równoległym. Funkcja prn_char() jest zdefiniowana w skrypcie do drukowania pięciu znaków o czasie trwania 0,5 sekundy. Następnie pierwsza pętla „for” jest używana do sekwencyjnego uruchamiania funkcji prn_char(). Druga pętla „for” jest używana do równoległego uruchamiania funkcji prn_char().
# Zdefiniuj funkcję do drukowania 5 znaków o czasie trwania 0,5 sekundyprn_char ( ) {
Do C W Witam; Do
spać 0,5 ;
Echo -N $c ;
zrobione
Echo
}
#Uruchom funkcję sekwencyjnie za pomocą pętli for
Do na zewnątrz W { 1 .. 3 } ; Do
prn_char ' $out '
zrobione
#Uruchom funkcję, używając pętli for równolegle
Do na zewnątrz W { 1 .. 3 } ; Do
prn_char ' $out ' &
zrobione
Po wykonaniu skryptu pojawia się następujący wynik. Różnica między przebiegiem sekwencyjnym a przebiegiem równoległym jest pokazana na wyjściu. Tutaj wszystkie znaki pętli „for” funkcji prn_char() są drukowane jednocześnie w przebiegu sekwencyjnym, a każdy znak jest drukowany trzy razy w przebiegu równoległym:
Wniosek
Uruchamianie zadań równoległych przy użyciu pętli „for” jest wymagane do wielu celów programistycznych. W tym samouczku pokazano metody uruchamiania zadań równoległych przy użyciu pętli „for”.