2015-12-21 20 views
6

Czytałem przykład na http://www.gnu.org/software/parallel/man.html#example__calling_bash_functions, czy można jednak użyć gnu równolegle do wywoływania 2 funkcji, które nie mają żadnych zmiennych, które im przekazujesz?równoległe wywołanie wielu funkcji bashu

przykład

a() { 
    echo "download a" 
    wget fileA 
} 

b() { 
    echo "download b" 
    wget fileB 
} 

i używać równolegle zadzwonić obie funkcje a & b?

+1

myślę, że trzeba zrobić dwa różne scenariusze i nazywają je równolegle. –

+1

Zamiast używać GNU równolegle, możesz po prostu wywołać funkcje w tle? Jak 'a &; b' uruchamiać 'a' równolegle z' b'? – chrisaycock

Odpowiedz

6

Uruchom je w tle. A potem poczekaj, aż ukończysz.

a() { 
    echo "download a" 
    wget fileA 
} 

b() { 
    echo "download b" 
    wget fileB 
} 

a & 
b & 
wait # waits for all background processes to complete 
+0

Wiwaty, które rzeczywiście spełniają swoją funkcję! – p4guru

5

Jeśli upierasz się przy użyciu GNU równolegle:

a() { 
    echo "download a" 
    wget fileA 
} 

b() { 
    echo "download b" 
    wget fileB 
} 
export -f a 
export -f b 
parallel ::: a b