поведение, похожее на очередь, для нескольких одноядерных заданий на одной машине?

Миниатюрный консольный инструмент «setop» теперь доступен в Debian Stretch и в Ubuntu с версии 16.10. Вы можете получить его через sudo apt install setop

Вот несколько примеров. Наборы, над которыми нужно работать, задаются как разные входные файлы :. setop input # is equal to "sort input --unique" setop file1 file2 --union # option --union is default and can be omitted setop file1 file2 file3 --intersection # more than two inputs are allowed setop file1 - --symmetric-difference # ndash stands for standard input setop file1 -d file2 # all elements contained in 1 but not 2

Логические запросы возвращают только EXIT_SUCCESSв случае истинности и EXIT_FAILURE, а также сообщение в противном случае. Таким образом, setop можно использовать в оболочке. setop inputfile --contains "value" # is element value contained in input? setop A.txt B.txt --equal C.txt # union of A and B equal to C? setop bigfile --subset smallfile # analogous --superset setop -i file1 file2 --is-empty # intersection of 1 and 2 empty (disjoint)?

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

  • setop input.txt --input-separator "[[:space:]-]"означает, что пробел (i. е.\v\t\n\r\fили пробел )или минус интерпретируется как разделитель между элементами (по умолчанию новая строка, т.е. е. каждая строка входного файла является одним элементом)
  • setop input.txt --input-element "[A-Za-z]+"означает, что элементами являются только слова, состоящие из латинских символов, все остальные символы считаются разделителями между элементами

Кроме того, вы можете

  • --countвсе элементы выходного множества,
  • --trimвсе входные элементы (i. е. удалить все нежелательные предшествующие и последующие символы, такие как пробел, запятая и т. д. ),
  • считать пустые элементы действительными через --include-empty,
  • --ignore-case,
  • установить --output-separatorмежду элементами выходного потока (по умолчанию \n),
  • и так далее.

См. man setopили github.com/phisigma/setop для получения дополнительной информации.

2
06.09.2019, 14:02
2 ответа

Существует множество инструментов, которые вы можете использовать, но я думаю, что лучший из них — параллельный GNU. Он значительно лучше xargs по гибкости и полезности. Ссылка — это описание параллелизма GNU для MacOS. Я думаю, вы обнаружите, что это, вероятно, лучшее решение для очередей, когда вы ищете.

Дополнительная информация об использовании parallel находится здесь .

2
27.01.2020, 22:02

Недавно я столкнулся с похожей проблемой. Насколько я знаю, у вас есть два варианта:

xargs -0 -P 24 -L 1

и

Параллель Гну


Например, чтобы преобразовать каждый flac-файл, найденный командой find, в ogg, я попытался запустить:

 find -name "*.flac" -print0 | xargs -0 -P 24 -L 1 oggenc

Одновременно выполняется до -P 24процессов с использованием -L 1строк из команды find. Я уверен, что вы можете использовать это, чтобы настроить его в соответствии со своими потребностями, но нам потребуется больше деталей из вашего вопроса.

1
27.01.2020, 22:02

Теги

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