如何运行有限数量的程序实例?

如何运行有限数量的程序实例?

例如,我需要处理大约 14000 个文件,现在我正在处理

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

这将逐个运行所有 revorb。我有四核处理器,所以我想同时运行四个 revorb 实例,但不超过四个。我试过

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

并导致 BSOD。还有其他方法可以并行运行四个任务吗?

答案1

据我所知,这无法通过 Windows 中的命令行或批处理程序完成。这是因为您无法通过命令行控制将哪个核心分配给特定作业。只有在应用程序运行后才能执行此操作。使用不同核心的“正确”方式是由执行(处理器密集型)工作的应用程序或程序决定的。应用程序使用多线程同时使用不同的内核。由于多线程使代码更加复杂,所以并非所有应用程序都实现多线程。

对于音频/视频编码,多线程确实很有用。在您的场景中,加速的“正确”方法是使用每个文件的所有核心使用多线程而不是使用程序实例的多个线程/核心,对不同的文件进行编码

正确的解决方案是使用一个利用所有核心的编码器对于每个文件进行编码。 例如利巴夫或者手刹将是适合此目的的工具。

相关内容