Próbuję użyć xargs do wywołania bardziej złożonej funkcji równolegle.Wywoływanie funkcji powłoki za pomocą xargs
#!/bin/bash
echo_var(){
echo $1
return 0
}
seq -f "n%04g" 1 100 |xargs -n 1 -P 10 -i echo_var {}
exit 0
ta zwraca błąd
xargs: echo_var: No such file or directory
pomysłów, w jaki sposób mogę korzystać z xargs do osiągnięcia tego celu, lub inne rozwiązanie (a) byłoby mile widziane.
niebezpieczeństwo, user1148366, niebezpieczeństwo! Nie używaj bash do programowania równoległego - natrafisz na tak wiele problemów. Użyj C/C++ i pthreads, lub wątków Java, lub cokolwiek, co sprawia, że długo i ciężko myślisz o tym, co robisz, ponieważ równoległe programowanie wymaga wiele przemyśleń, aby uzyskać właściwe wyniki. –
@DavidSouther Jeśli zadania są niezależne, na przykład konwertuj wszystkie te pliki graficzne na png, nie martw się. Dzieje się tak, gdy masz synchronizację (poza oczekiwaniem na zakończenie) i komunikację, która staje się nieporządna. –