有没有办法为具有 python 多处理的单个进程指定最大内核数?

Is there a way to specify a maximum number of cores for a single Process with python multiprocessing?

当我初始化为 p = Process(target=fn),其中 fn 是一些函数调用。

有没有办法指定,比如说进程初始化的参数,以便在运行时分配给 p 的最大内核数受给定数量的限制?

我在文档中找不到这样的参数 here

由您的函数决定它使用了多少核心(或者更确切地说能够利用),而不是您的 Process 实例

我认为这与您的设计方式有点相反,但是除了操作系统分配它们的方式之外,进程并没有锁定到任何或什至某些核心集,通常为它们提供资源时间管理(CPU、内存、网络、磁盘..),他们实际上是通过其 API.

请求的

除非您的进程不遗余力地利用多个核心,否则它最多只能利用一个核心(线程),并且可能比核心可能的总工作量更少。
然而,许多第 3 方库(例如 NumPy)将利用更多内核,除非通过创建额外线程来指示,通常与系统默认支持的线程一样多。如果是这种情况,您可以调整它们使用的线程数,通常是通过参数或环境变量。

看看这些资源


创建后,您可以在新进程上设置操作系统级别的限制(cgroup settings 对于大多数 Linux 类系统),以在父进程具有足够的权限时更改其调度方式这样做,但这可能会导致比预期更差的性能(例如,如果您创建 8 个线程,但将使用限制为 2 个内核,开销时间将浪费在无法获得更多价值的线程之间切换)

另见