Параллельный запуск тысяч простых скриптов

В существующей установке Arch соберите пакет на месте (, не устанавливайте его):

git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -s

Затем переместите полученный файл пакета в архив ISO:

sudo mv yay-9.2.0-1-x86_64.pkg.tar /path/to/the/ISO/airootfs/root/.

При загрузке в ISO запустите pacman:

pacman -U yay-9.2.0-1-x86_64.pkg.tar
1
24.03.2021, 15:49
2 ответа

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

Запуск 6500 процессов параллельно, скорее всего, плохая идея.

  • Для 6500 процессов требуется оперативная память.
  • Если ваша задача привязана к ЦП, она будет выполняться медленнее, поскольку требует гораздо большего количества переключений контекста.
  • Если ваша задача привязана к вводу-выводу, доступ 6500 процессов к разным каталогам также замедлит ее выполнение.

Для вашей задачи могут быть полезны некоторые параллельные процессы, но вы должны ограничить их числом, кратным количеству имеющихся у вас ядер ЦП.

3
28.04.2021, 22:56

Попробуйте:

parallel 'cd {} && cp../script.py. && python./script.py' :::  *_directorynumber

Будет выполняться один script.pyна каждый поток ЦП, пока все не будут выполнены.

Если script.pyне привязан к ЦП, вы можете настроить количество заданий с помощью--jobs:

  • --jobs 10запустить ровно 10 параллельно
  • --jobs 200%параллельно запускать 2 потока ЦП
  • --jobs 0бегите столько, сколько сможете, пока не достигнете предела (, такого как :-bash: fork: retry: No child processes), затем оставайтесь ниже этого предела.
0
28.04.2021, 22:56

Теги

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