GNU параллельные не порождаемые задания
После обновления до Debian 8.6 Jessie параллельный скрипт GNU внезапно прекратил параллелизацию более чем с 2 заданиями с опциями --pipe и -L.
Перед обновлением команда:
cat file_with_1064_lines.txt | parallel -L10 -j5 -k -v --pipe "wc -l"
породил 5 процессов, которые выводят это:
туалет 10 туалет 10...
Та же команда после обновления:
туалет 1060 туалет 4
(Два значения выше меняются относительно значения опции -L - первое L*floor(1064/L)
а второй 1064 mod L
, но там всегда только два процесса выдачи.)
То же самое наблюдается независимо от параллельной версии (протестирована последняя и одна из 2013).
PS.
$ uname -a Linux 3.16.0-4-amd64 # 1 SMP Debian 3.16.36-1 + deb8u2 (2016-10-19) x86_64 GNU / Linux $ параллельный - версия Параллельный GNU 20161222
1 ответ
Решение
-L - размер записи. Ошибка была исправлена около 20130122 года. Вам нужно прочитать 1 запись из 10 строк:
parallel -L10 -N1 -j5 -k -v --pipe wc -l
или 10 записей по 1 строке:
parallel -L1 -N10 -j5 -k -v --pipe wc -l