gnu параллельно --pipe создает пустые выходные файлы
Я изо всех сил пытаюсь запустить GNU параллельно. У меня есть сценарий оболочки, который вызывает программу Python несколько тысяч раз с различными входными параметрами:
python /path/to/program/run.py A_02_01 input.fasta > /path/to/output/out.txt
python /path/to/program/run.py A_02_02 input.fasta > /path/to/output/out.txt
Я попытался использовать GNU параллельно так:
cat iedb_classi_call.sh | parallel --recstart 'python' --recend '\n' --pipe bash
Но все мои выходные файлы пусты. Я изо всех сил пытаюсь выяснить, почему. Я не получаю ошибки от GNU параллельно.
До того, как я добавил параметры перезапуска и отправки, я получал непустые выходные файлы для некоторых вызовов Python, но другие вызовы программ не выполнялись и не получали ошибок, таких как:
run.py: error: incorrect number of arguments
bash: line 422: 01_ input.fasta: command not found
Usage: run.py allele fasta_file
Это заставило меня подумать, что параллель читала в чанках, разделенных неправильно, и я добавил параметры --recstart / --recend в параллель
Я использую GNU параллельную версию 20180722
1 ответ
(Это должен быть комментарий, так как он не отвечает на реальный вопрос, но форматирование кода работает не очень хорошо).
Если строки похожи:
python /path/to/program/run.py A_02_01 input.fasta > /path/to/output/out.txt
python /path/to/program/run.py A_02_02 input.fasta > /path/to/output/out.txt
Тогда вы можете сделать:
cat file-with-A_names |
parallel --results /path/{}.out python /path/to/program/run.py {} input.fasta >/dev/null
Вывод будет сохранен в /path/A....out
,