Заставить GNU Parallel не задерживать выполнение аргументов из STDIN

Вы можете просто пересоздать с опцией--force(-fнеоднозначно):

xen-create-image --force --hostname=something --size=8Gb --swap=2Gb --memory=1Gb --ip=10.77.77.105 --dist=jessie
3
07.04.2019, 19:04
1 ответ

Ошибка в GNU Parallel заключается в том, что он начинает обработку только после чтения одного задания для каждого слота заданий. После этого он читает одно задание за раз.

В старых версиях вывод также будет задерживаться на количество слотов заданий. В более новых версиях вывод задерживается только на одно задание.

Таким образом, если вы отправляете одно задание в секунду на parallel -j10, он будет считывать 10 заданий перед их запуском. В более старых версиях вам пришлось бы ждать еще 10 секунд, прежде чем вы увидите результат задания 3.

Обход ограничения при запуске состоит в том, чтобы подавать одно фиктивное задание на каждый слот задания в параллель:

true >jobqueue; tail -n+0 -f jobqueue | parallel &
seq $(parallel --number-of-threads) | parallel -N0 echo true >> jobqueue
# now add the real jobs to jobqueue

Обходной путь, который следует использовать для вывода --linebuffer(, но при этом будут смешаны полные строки из разных заданий ).

2
27.01.2020, 21:24

Теги

Похожие вопросы