Iba't ibang Halimbawa ng Mga Parallel na Trabaho
Ang iba't ibang paraan ng pagpapatakbo ng mga parallel na trabaho gamit ang 'para sa' loop ay ipinapakita sa bahaging ito ng tutorial.
Halimbawa 1: Patakbuhin ang Parallel Jobs Gamit ang 'Para sa' Loop
Ang paggamit ng 'para sa' loop ay ang mas simpleng paraan upang maisagawa ang mga parallel na trabaho sa Bash script. Gumawa ng Bash file na may sumusunod na script na nagpapatakbo ng 'para sa' loop nang 10000 beses at mag-print ng numero pagkatapos ng pag-ulit ng 1000 beses. Ang gawaing ito ay ginagawa nang magkatulad gamit ang 'para sa' loop.
#!/bin/bash
#Ulitin ang loop hanggang umabot sa 10000
para sa val sa ` seq 0 1000 10000 ` ;
gawin
#Print bawat ika-1000 na numero
echo $val
tapos na
Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script. Mayroong 10 numero sa pagitan ng 0 at 10000 na naka-print sa output:
Halimbawa 2: Patakbuhin ang Mga Parallel na Trabaho Gamit ang Nested 'Para sa' Loop
Gumawa ng Bash file na may sumusunod na script na nagpapatakbo ng nested 'for' loop na bumubuo ng serial number gamit ang mga alphabetic na character mula 'A' hanggang 'C' at ang mga numero 1 hanggang 3. Sa unang pag-ulit ng panlabas na loop at pagkatapos pagkumpleto ng pag-ulit ng panloob na loop, 'A1. CodeIgniter', 'A2. Laravel', at 'A3. CakePHP” ay naka-print. Sa pangalawang pag-ulit ng panlabas na loop at pagkatapos makumpleto ang pag-ulit ng panloob na loop, 'B1. Oracle', 'B2. MySQL', at 'B3. SQL' ay naka-print. Sa ikatlong pag-ulit ng panlabas na loop at pagkatapos makumpleto ang pag-ulit ng panloob na loop, 'C1. CSS', 'C2. JQuery', at 'C3. JavaScript' ay naka-print.
#Outer loop
para sa alpha sa { A..C }
gawin
#Inner loop
para sa numero sa { 1 .. 3 }
gawin
#I-print ang output batay sa kundisyon
kung [ $alpha == 'A' ] ; pagkatapos
arrayList = ( 'CodeIgniter' 'Laravel' 'CakePHP' )
elif [ $alpha == 'B' ] ; pagkatapos
arrayList = ( 'Oracle' 'MySQL' 'SQL' )
elif [ $alpha == 'C' ] ; pagkatapos
arrayList = ( 'CSS' 'JQuery' 'JavaScript' )
maging
echo ' $alpha $number . ${arrayList[$number-1]} '
tapos na
tapos na
Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script:
Halimbawa 3: Patakbuhin ang Parallel Jobs Gamit ang 'For' Loop at 'Wait' Command
Ang command na 'wait' ay isang napaka-kapaki-pakinabang na command ng Bash na ginagamit upang maghintay ng isang trabaho upang makumpleto ang gawain kapag maraming trabaho ang tumatakbo. Kung mas kaunting mga trabaho ang tumatakbo, ang command na 'wait' ay magsisimula ng bagong trabaho nang asynchronous. Gumawa ng Bash file na may sumusunod na script na nagpapatakbo ng background job sa loob ng nested 'for' loop. Ang command na 'wait' ay ginagamit para sa paghihintay upang makumpleto ang lahat ng mga proseso ng bata. Ang 'petsa' at 'sleep' na mga utos ay isinasagawa bilang proseso sa background.
#Outer looppara sa i sa { 1 .. 2 }
gawin
#Inner loop
para sa j sa { 1 .. 3 }
gawin
kung pagsusulit ' $(mga trabaho | wc -l) ' -ge 2 ; pagkatapos
maghintay -n
maging
#Proseso sa background
{
petsa
matulog 1
} at
tapos na
tapos na
Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script. Ang kasalukuyang petsa at oras ay naka-print ng 6 na beses mula sa proseso sa background upang ulitin ang mga nested na 'para sa' na mga loop para sa 2 × 3 = 6 na beses:
Halimbawa 4: Mga Pagkakaiba sa Pagitan ng Sequential at Parallel Run
Gumawa ng Bash file na may sumusunod na script na nagpapakita ng mga pagkakaiba sa pagitan ng sequential run at parallel run. Ang prn_char() function ay tinukoy sa script upang mag-print ng limang character na may 0.5 segundong tagal. Susunod, ang unang 'para sa' loop ay ginagamit upang patakbuhin ang prn_char() function nang sunud-sunod. Ang pangalawang 'para sa' loop ay ginagamit upang patakbuhin ang prn_char() function nang magkatulad.
#Tumukoy ng function para mag-print ng 5 character na may tagal na 0.5 segundoprn_char ( ) {
para sa c sa Kamusta; gawin
matulog 0.5 ;
echo -n $c ;
tapos na
echo
}
#Patakbuhin ang function gamit ang para sa loop nang sunud-sunod
para sa palabas sa { 1 .. 3 } ; gawin
prn_char ' $out '
tapos na
#Patakbuhin ang function gamit ang parallel na loop
para sa palabas sa { 1 .. 3 } ; gawin
prn_char ' $out ' at
tapos na
Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script. Ang pagkakaiba sa pagitan ng sequential run at parallel run ay ipinapakita sa output. Dito, ang lahat ng mga character ng 'for' loop ng prn_char() function ay naka-print sa isang pagkakataon sa sequential run at ang bawat character ay naka-print nang tatlong beses sa parallel run:
Konklusyon
Ang pagpapatakbo ng mga parallel na trabaho gamit ang 'for' loop ay kinakailangan para sa maraming layunin ng programming. Ang mga paraan ng pagpapatakbo ng mga parallel na trabaho gamit ang 'para sa' loop ay ipinapakita sa tutorial na ito.