Мне нужна помощь в оптимизации параллельной работы GNU, когда входные данные содержатся во многих файлах, которые должны быть объединены вместе и переданы в несколько различных команд, каждая из которых должна выполняться параллельно.
Я анализирую данные из архива, содержимое которого содержится во многих файлах.Цель состоит в том, чтобы разбить различные типы данных на файлы по типу для всего архива.Чтобы добиться этого, я объединяю файлы вместе и передаю их в каждую команду синтаксического анализа.Парсер принимает данные на stdin и принимает в качестве аргумента тип данных для анализа (например, 'parser type1' для анализа данных типа 1 и т. Д.)
На данный момент у меня есть что-то вроде этого:
parallel --xapply ::: \
'cat datadir/*.dat | parser type1 > type1.txt' \
'cat datadir/*.dat | parser type2 > type2.txt' \
'cat datadir/*.dat | parser type3 > type3.txt'
Но это требует объединения данных несколько раз, что является медленным и кажется ненужным дорогостоящим.Кроме того, я понимаю, что существует ограничение пропускной способности канала.Есть ли лучший способ добиться этого?