【发布时间】:2016-06-07 20:09:58
【问题描述】:
我正在 Linux 上编写一个 python 2.7.11 程序。该程序使用 multiprocessing.Pool 创建 12 个子进程。每个子进程通过 Python 的 psutil 库与 12 个 cpu 之一具有 cpu 亲和性。
我使用multiprocessing.Event让11个子进程等待子进程0。
然后,在子进程 0 中,我调用 Intel 的数学内核库开始计算 12 个线程。
等待的子进程会不会消耗cpu资源,影响12个线程的计算?
如果是这样,如何避免这种情况?或者,如何测试是否发生这种情况?
主进程会影响12个线程的计算吗?
谢谢。
【问题讨论】:
-
一般来说,没有。假设操作系统将进程分配给系统中不同的核心/处理器,一个不应该影响另一个。缺乏细节,很难更具体。你能发布一些示例代码吗?
-
这12个子流程不会相互影响。但是,“等待”的 12 个子进程会影响 intel 的 mkl 从子进程 0 启动的 12 个线程吗?只有 12 个 cpu .... 我可以尝试制定代码的简化版本。整个事情,包括接口 python numpy 和 intel mkl 的 ctypes 都相当长。
标签: python multithreading parallel-processing multiprocessing