Я хотел бы обработать 2000 файлов на 64-ядерном компьютере. У меня есть питон скрипт foo.py
который я бегу, как это:Как запускать задачи параллельно в bash без GNU parallel
cat file0000.txt|./foo.py > out0000.txt
В идеале я хотел бы разделить файлы 2000 file0000.txt для file01999.txt в сорока устанавливает каждый размером 50 и запустить foo.py на каждом наборе в параллельны друг другу. Для множеств 1 до 4 из 40, что было бы эквивалентно следующее:
cat file00[0-4][0-9] |./foo.py > outfile1.txt &
cat file00[5-9][0-9] |./foo.py > outfile2.txt &
cat file01[0-4][0-9] |./foo.py > outfile3.txt &
cat file01[5-9][0-9] |./foo.py > outfile4.txt &
К сожалению, система Я бегу это на не parallel
, так что я должен сделать это без того очень полезный инструмент.
Bash script processing commands in parallel выглядит похоже, но самый популярный ответ напрямую не применим, а второй самый популярный ответ использует parallel
, к которому у меня нет доступа.
Что такое проблема с параметрами 'xargs' и' -P max-procs'? – Alper
@Alper Это может быть ответом, но я никогда не использовал его. Как бы вы использовали его для моей проблемы? – eleanora
Что-то вроде 'ls -1 | xargs -I {} -P 5 sh -c "cat {} | ./foo.py> out {}. txt" ', Примечание:' ls -1' должен содержать список ваших входных файлов и изменять '-P 5' как тебе нравится. – Alper