Команда обработки параллельно на пакет

Когда дело доходит до файлового ввода-вывода , дорогостоящая задача - перемещать данные.

Если он находится в файловой системе (а это должно быть для ln , чтобы работать), то разница спорный.

В каждом случае все, что происходит, - это модификация записи каталога, указывающая на другой индексный дескриптор. В лучшем случае это будет лишь незначительная разница, поэтому вы действительно сравниваете, «насколько быстро запускаются команды».

Но с одной оговоркой - что последняя команда оставит / pathA / fileA на месте - это жесткая ссылка, заставляющая обе записи каталога указывать на одни и те же данные.

Это может запутать людей в будущем, потому что, если они перезапишут fileA, он сделает одно, а если они отредактируют , он сделает что-то другое.

Так что просто ошибитесь в сторону простого - придерживайтесь только mv . В целом это не будет иметь большого значения, и это наиболее ясно показывает, чего вы на самом деле пытаетесь достичь.

1
07.11.2018, 09:11
2 ответа

Использование GNU Parallel:

parallel my_process {} ::: files*

Будет запущено по одному my_process fileна каждый поток ЦП.

Вы можете указать GNU Parallel убедиться, что 10 ГБ ОЗУ свободны, прежде чем он начнет следующее задание.:

parallel --memfree 10G my_process {} ::: files*

Если свободное пространство памяти упадет ниже 5G, GNU Parallel прервет самое новое задание и перезапустит его, когда снова станет 10G свободным.

3
27.01.2020, 23:15

gnu parallel может это сделать. В Debian выполните apt-get install parallel. Тогда читайте инструкцию.

Параллельный Gnu работает так же, как xargs, но лучше решает, запускать ли больше параллельных процессов.

(makeтоже может это сделать.)

2
27.01.2020, 23:15

Теги

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