Я новичок в GNU Parallel, и я буду рад, если вы укажете некоторые ошибки и недоразумения. Я прочитал руководство, но он говорит в основном об одноэтапной операции, в которой необходимо указать определение «действие» в синтаксисе GNU Parallel (распаковка, перемещение и т. Д.), И ничего не указано о многоэтапных шагах, когда вы необходимо выполнить несколько действий без изменения (значительно) кода (если курс вообще возможен)Поддельное распараллеливание в скрипте над циклом (строка foreach) без существенных изменений кода
Возможно ли «поддельная» параллельная обработка в коде, который его не поддерживает? Код имеет цикл (есть список файлов в любом формате, и в какой-то момент он подходит к циклу), и все, что вам нужно, чтобы этот код выполнял определенные действия (независимо от того, какие действия) для всех файлов одновременно, а не последовательно (без изменения кода по существу или только около 138 строк - см. ниже). Для такого рода параллельной обработки не требуется разделять файлы или что-то в этом роде, а просто обрабатывать сразу все файлы.
В качестве примера: здесь является частью кода, который интересует, полный код здесь - 138 линия GMT
# <code> actions (see full code - link below) and check input file availability
#loop
#
foreach line (`awk '{print $0}' $1`)
# <code> actions (see full code - link below)
end if
Источник, полный код: GMT
Может быть, это может быть реализовано с использованием других инструментов, кроме GNU Parallel? Любая помощь полезна. Желательно, например, если таковые имеются. И если вы сделаете весь код параллельным, это, вероятно, вызовет проблемы. Это необходимо в момент цикла.
Thanks
Есть ли причина использовать 'csh', а не' bash'? Кажется, вы тратите весь свой скрипт на множество вызовов 'awk', которые были бы совершенно ненужными в' bash'. Вы также можете поместить весь свой код в 'function', если вы используете' bash', затем «экспортируете» функцию в ** GNU Parallel ** и запускаете функцию параллельно с 'parallel someFunc'. –
Также старайтесь избегать таких вещей, как 'grep XYZ someFile | awk 'print $ 3'', а вместо этого 'awk' тоже выполняет поиск' awk'/XYZ/{print $ 3} 'someFile' –
Будет очень сложно переписать все в 'bash'. И код не мой. Тем более, что я все еще просто учился. Много ловушек и так далее. Но я спрашиваю разработчиков (т.е. могу ли я переписать на bash). Благодарю вас за идею. – user2899758