我正在Linux上编写一个python 2.7.11程序。该程序使用multiprocessing.Pool创建12个子流程。每个子进程与12个cpu中的一个通过psutil库为python具有cpu亲和性。
我使用multiprocessing.Event使11个子进程等待子进程0。
然后,在子流程0中,我调用Intel的数学内核库来开始使用12个线程进行计算。
等待子进程是否会消耗任何cpu资源并影响12个线程的计算?
如果是这样,如何避免?或者,如何测试是否会发生这种情况?
主进程是否会影响12个线程的计算?
感谢。
答案 0 :(得分:1)
好的,我做了一点研究,然后......
首先,由于12个线程都在一个进程中,因此其他子进程中发生的情况不应以任何方式影响父进程。操作系统发生了一些后台处理,用于处理将在OS内核进程中发生的进程间通信,可能是父进程(进程0)。然而,这是非常小的,不应受其他过程中的活动影响。
换句话说,一个过程中的繁重活动不应影响另一个过程。
我会建议两件事。
1)再添加一个进程,从中启动12个线程。这会将它与操作系统所在的父线程分开。
2)做一些自己测试的时间。使用当前的毫秒计时器在每个线程的开头设置一个变量。在处理结束时,检查它花了多长时间。然后让其他进程执行一些无意义的浮点计算,看看是否会影响线程的平均运行时间。
对Time模块,Multiprocessing模块和Threading模块进行一些研究应该有助于为您澄清这个主题。