Параллельное зависание GNULinux

Ответить
Anonymous
 Параллельное зависание GNU

Сообщение Anonymous »

У меня есть сценарий bash, который применяет различные преобразования/сопоставления к столбцам файла TSV. Я пытаюсь распараллелить преобразования, используя параллель GNU, однако мой код зависает.
Для простоты рассмотрим cat, преобразователь идентификаторов (т. е. ввод -> вывод) и TSV. файл из трех столбцов (созданный на лету с помощью вставки и seq)

Код: Выделить всё

n=1000000
map=cat    # identity: inp -> out

rm -f tmp.col{1,2}.fifo
mkfifo tmp.col{1,2}.fifo
paste (cut -f2 | $map > tmp.col2.fifo) \
| cut -f3- \
| paste tmp.col{1,2}.fifo - \
| python -m tqdm > /dev/null
Приведенный выше код работает нормально.

ПРИМЕЧАНИЕ: python -m tqdm > /dev/null выводит скорость

Далее мы можем распараллелить задачи сопоставления, используя аргументы GNU Parallel --pipe --keep-order. Вот минимальный работающий параллельный пример:

Код: Выделить всё

seq 100 | parallel --pipe -k -j4 -N10 'cat && sleep 1'
Теперь, сложив все это вместе, вот мой код, который параллельно сопоставляет столбцы TSV:

Код: Выделить всё

n=1000000
map=cat   # identity map: inp -> out
rm -f tmp.col{1,2}.fifo
mkfifo tmp.col{1,2}.fifo
paste (cut -f2 | parallel --id jobB --pipe -k -j4 -N1000 "$map" > tmp.col2.fifo) \
| cut -f3- \
| paste tmp.col{1,2}.fifo - \
| python -m tqdm > /dev/null
Этот код должен был работать, однако этот код зависает.
Почему он зависает и как его разморозить?


Окружающая среда: Linux 5.15.0-116-generic, Ubuntu 22.04.4 LTS на x86_64


Подробнее здесь: https://stackoverflow.com/questions/788 ... el-freezes
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»