我有四个 bat 文件和一台四核机器。是否可以将每次运行分配给每个核心,即每个核心分配一个作业。有没有办法用命令来控制它?
答案1
在 Windows 7 及更高版本中,您可以使用它START /AFFINITY
来启动进程并将其限制到一个或多个特定处理器。
对于早期版本的 Windows(XP 及更高版本),您可以下载免费 Microsoft 实用程序 PsExec v2.0它不仅允许您将进程分配给特定处理器,还允许您在远程机器上运行进程。
在您对 Chopper3 的回答的评论中,您说您有一个包含许多作业的队列,并且您希望为每个处理器启动一个作业,然后让其余作业等待,直到处理器空闲。shell 进程的并行执行我在 StackOverflow 上发布了一个示例批处理文件,它几乎可以满足您的要求。正如所写,它设置了一个作业队列,然后限制了并发进程的数量。它假设操作系统将处理可用处理器之间的负载平衡。更棒的是,该脚本还支持 PsExec,因此您应该能够将每个进程分配给远程计算机和/或特定处理器。但是,我还没有测试过 PsExec 功能。
答案2
如果您使用它,start /b whatever.bat
它将在后台启动批处理文件,如果您立即执行此操作,则内核将相应地安排作业 - 您不能也不想为每个批处理文件分配一个核心 - 您只是希望它们异步运行并让操作系统管理工作负载。