我想使用多处理在系统的多个核心之间传播工作。作为工作的一部分,他们将运行subprocess.call(..., shell=True)
。当他们这样做时会发生什么?子进程分支是否保留在该核心上?
答案 0 :(得分:2)
如果主要工作是在使用subprocess
模块创建的子进程中完成的,那么您不需要multiprocessing
将工作分散到多个CPU核心。见Python threading multiple bash subprocesses?
当他们这样做时会发生什么?
subprocess.call()
运行外部命令并等待它完成。它是否在由multiprocessing
模块创建的工作进程内启动并不重要。
子进程分支是否保留在该核心上?
如果你需要它;您应该明确设置CPU关联。 psutil
provides a portable way to set/get CPU affinity for a process
如果使用numpy
,则可能会影响cpu亲和性。见Why does multiprocessing use only a single core after I import numpy?