Python的子进程和多处理包如何互操作?

时间:2015-09-08 17:22:53

标签: python subprocess python-multiprocessing

我想使用多处理在系统的多个核心之间传播工作。作为工作的一部分,他们将运行subprocess.call(..., shell=True)。当他们这样做时会发生什么?子进程分支是否保留在该核心上?

1 个答案:

答案 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?