Různé příklady paralelních úloh
V této části výukového programu jsou uvedeny různé způsoby spouštění paralelních úloh pomocí smyčky „for“.
Příklad 1: Spusťte paralelní úlohy pomocí smyčky „For“.
Použití smyčky „for“ je jednodušší způsob provádění paralelních úloh ve skriptu Bash. Vytvořte soubor Bash pomocí následujícího skriptu, který spustí smyčku „for“ 10 000krát a vytiskne číslo po 1000násobné iteraci. Tato úloha se provádí paralelně pomocí smyčky „for“.
#!/bin/bash
# Iterujte smyčku, dokud nedosáhnete 10 000
pro val v ' seq 0 1000 10 000 ' ;
dělat
#Vytiskněte každé 1000. číslo
echo $val
Hotovo
Po provedení skriptu se zobrazí následující výstup. Ve výstupu je vytištěno 10 čísel mezi 0 a 10000:
Příklad 2: Spusťte paralelní úlohy pomocí vnořené smyčky „For“.
Vytvořte soubor Bash pomocí následujícího skriptu, který spouští vnořenou smyčku „for“, která generuje sériové číslo pomocí abecedních znaků od „A“ do „C“ a čísel 1 až 3. V první iteraci vnější smyčky a poté dokončení iterace vnitřní smyčky, „A1. CodeIgniter“, „A2. Laravel“ a „A3. CakePHP“ jsou vytištěny. Ve druhé iteraci vnější smyčky a po dokončení iterace vnitřní smyčky se „B1. Oracle“, „B2. MySQL“ a „B3. SQL“ jsou vytištěny. Ve třetí iteraci vnější smyčky a po dokončení iterace vnitřní smyčky se „C1. CSS“, „C2. JQuery“ a „C3. JavaScript“ jsou vytištěny.
#Vnější smyčka
pro alfa v { A..C }
dělat
#Vnitřní smyčka
pro číslo v { 1 .. 3 }
dělat
# Vytiskněte výstup na základě podmínky
-li [ $alpha == 'A' ] ; pak
arrayList = ( 'CodeIgniter' 'Laravel' 'CakePHP' )
elif [ $alpha == 'B' ] ; pak
arrayList = ( 'Věštec' 'MySQL' 'SQL' )
elif [ $alpha == 'C' ] ; pak
arrayList = ( 'CSS' 'JQuery' 'JavaScript' )
být
echo ' $alpha $číslo . ${arrayList[$number-1]} '
Hotovo
Hotovo
Po spuštění skriptu se zobrazí následující výstup:
Příklad 3: Spusťte paralelní úlohy pomocí smyčky „For“ a příkazu „Wait“.
Příkaz „wait“ je velmi užitečný příkaz Bash, který se používá k čekání na dokončení jedné úlohy, když je spuštěno více úloh. Pokud běží méně úloh, příkaz „wait“ spustí novou úlohu asynchronně. Vytvořte soubor Bash pomocí následujícího skriptu, který spustí úlohu na pozadí uvnitř vnořené smyčky „for“. Příkaz „wait“ se používá pro čekání na dokončení všech podřízených procesů. Příkazy „date“ a „sleep“ se provádějí jako proces na pozadí.
#Vnější smyčkapro i v { 1 .. 2 }
dělat
#Vnitřní smyčka
pro j v { 1 .. 3 }
dělat
-li test ' $(pracovní místa | wc -l) ' -ge 2 ; pak
Počkejte -n
být
#Proces na pozadí
{
datum
spát 1
} &
Hotovo
Hotovo
Po provedení skriptu se zobrazí následující výstup. Aktuální datum a čas se vytisknou 6krát z procesu na pozadí, aby se vnořené smyčky „for“ opakovaly 2×3=6krát:
Příklad 4: Rozdíly mezi sekvenčním a paralelním chodem
Vytvořte soubor Bash pomocí následujícího skriptu, který ukazuje rozdíly mezi sekvenčním a paralelním spuštěním. Funkce prn_char() je definována ve skriptu pro tisk pěti znaků s 0,5 sekundou trvání. Dále se první smyčka „for“ používá k sekvenčnímu spuštění funkce prn_char(). Druhá smyčka „for“ se používá k paralelnímu spuštění funkce prn_char().
#Definujte funkci pro tisk 5 znaků s trváním 0,5 sekundyprn_char ( ) {
pro C v Ahoj; dělat
spát 0,5 ;
echo -n $c ;
Hotovo
echo
}
# Spusťte funkci pomocí smyčky for postupně
pro ven v { 1 .. 3 } ; dělat
prn_char ' $out '
Hotovo
#Spusťte funkci pomocí smyčky for paralelně
pro ven v { 1 .. 3 } ; dělat
prn_char ' $out ' &
Hotovo
Po provedení skriptu se zobrazí následující výstup. Rozdíl mezi sekvenčním a paralelním chodem je zobrazen na výstupu. Zde se všechny znaky cyklu „for“ funkce prn_char() vytisknou najednou v sekvenčním běhu a každý znak se vytiskne třikrát v paralelním běhu:
Závěr
Spouštění paralelních úloh pomocí smyčky „for“ je vyžadováno pro mnohé účely programování. V tomto kurzu jsou uvedeny metody spouštění paralelních úloh pomocí smyčky „for“.