Например, у меня есть около 14000 файлов, которые мне нужно обработать. Сейчас я делаю это с

for %%a in (*.OGG) do revorb.exe "%%a"

Это запускает все revorbs один за другим. У меня есть четырехъядерный процессор, поэтому я хотел бы запустить четыре экземпляра revorb одновременно, но не более четырех. я пробовал

for %%a in (*.OGG) do start revorb.exe "%%a"

и это вызвало BSOD. Есть ли другой способ запустить четыре задачи параллельно?

1 ответ1

2

Насколько я знаю, это не может быть сделано из командной строки или пакетной программы в Windows. Это потому, что вы не можете контролировать из командной строки, какое ядро назначено для определенной работы. Вы можете сделать это только после того, как приложение уже запущено. "Правильный" способ использования разных ядер - это приложение или программа, которая (интенсивно использует процессор) работает. Приложения используют многопоточность для одновременного использования различных ядер. Поскольку многопоточность делает код более сложным, не все приложения реализуют многопоточность.

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

Правильное решение - использовать кодировщик, который использует все ядра для каждого файла, который он кодирует. Например , Libav или Handbrake бы подходящие инструменты для этого.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .