Я пишу крошечный скрипт, который вызывает утилиту PNGOUT для нескольких сотен файлов PNG. Я просто сделал это:
find $BASEDIR -iname "*png" -exec pngout {} \;
А потом я посмотрел на монитор процессора и заметил, что использовалось только одно ядро, что довольно печально.
В этот день и в эпоху настольных компьютеров с двумя, четырьмя, окто и гекса (?) Ядрами, как мне просто распараллелить эту задачу с Bash? (это не первый раз, когда я испытываю такую потребность, потому что довольно много этих утилит являются однопоточными ... У меня уже был случай с кодировщиками mp3).
Будет ли просто запускать все pngout в фоновом режиме? Как тогда будет выглядеть моя команда find ? (Я не очень уверен, как смешать find и символ '&')
Если бы у меня было три сотни картинок, это означало бы переключение между тремя сотнями процессов, что в любом случае не кажется великолепным!?
Или я должен скопировать мои три сотни файлов или около того в "nb dirs" , где "nb dirs" будет количеством ядер, а затем работать одновременно " nb находит "? (что было бы достаточно близко)
Но как мне это сделать?