Как использовать gnu_parallel для запуска исполняемого файла из списка файлов?

В настоящее время я учусь использовать пакет gnu_paralle. Я прочитал https://www.gnu.org/software/parallel/man.html#EXAMPLE:-Working-as-xargs--n1.-Argument-appending

а также несколько других ресурсов и успешно изучил синтаксис.

На данный момент у меня есть исполняемый файл, скомпилированный g++, который принимает *argv. В настоящее время я запускаю его последовательно, делая в bash следующее:

cd ./ && find ./data | grep '\.data.format$' > datalist.tmp;

Затем я прочитал этот список файлов в следующем порядке

while read LINE; do executable $LINE; done <datalist.tmp

В настоящее время. Из чтения документации gnu_parallel я понял, что обработка исполняемого файла в нескольких экземплярах может выполняться параллельно.

Кто-нибудь поможет с синтаксисом здесь, пожалуйста?


person Sj L    schedule 30.04.2019    source источник


Ответы (2)


Пытаться:

parallel -a datalist.tmp executable

Or:

parallel executable < datalist.tmp

Не уверен, что делает cd ./ - похоже, он меняет каталог на текущий, что кажется бессмысленным, потому что там уже находится процесс.

person Mark Setchell    schedule 30.04.2019

Спасибо. В итоге я нашел следующее решение,

while read LINE; do echo executable.exe $LINE ; done < data.tmp |paralell -j4
person Sj L    schedule 30.04.2019