Windows 11环境下Python多进程无法在双CPU节点间稳定均衡分配的问题求助
Windows 11环境下Python多进程无法在双CPU节点间稳定均衡分配的问题求助
各位大佬好,我最近碰到一个非常头疼的多进程调度问题,想请教下有没有可行的解决方案:
我目前用Python的concurrent.futures.ProcessPoolExecutor来并行执行多个DRL训练任务,新换的工作站配置是双CPU,每颗CPU有28个物理核心、56个逻辑核心。但实际运行时出现了一系列异常状况:
- 进程一开始还能在两个CPU节点间均衡分配,但运行几个小时后,所有进程都会集中跑到第一颗CPU上,导致这颗CPU过热,整体执行速度大幅下降
- 尝试过手动在任务管理器的「详细信息」页修改进程的CPU亲和性,但完全没有效果
- 试过用
psutil在进程启动时设置亲和性,同样无效;而且只要把亲和性设置到第二颗CPU的核心上,就会抛出OSError: [WinError 87] Wrong Parameter错误——但psutil.get_cpucount()明明能识别出所有核心 - 更奇怪的是,任务管理器「详细信息」页显示所有Python进程都在CPU核心1(偶尔会到2、3),但「性能」页却显示第一NUMA节点的多个核心都在被使用,这明显矛盾
我用的是Windows 11系统,之前了解到Win11应该已经取消了最多64个处理器的处理器组限制,但还是遇到了这个问题。有没有大佬遇到过类似情况,或者知道怎么让进程稳定地在两个CPU节点间分配?
内容来源于stack exchange
相关产品推荐
相关产品推荐

