通过多个核心

时间:2016-08-14 22:48:53

标签: python parallel-processing scipy jupyter odeint

我正在使用Python 2.7在Jupyter(Anaconda)工作。

我正在尝试获取我编写的多次运行的odeint函数,但这需要花费大量时间。

在试图弄清楚如何减少运行时间时,我意识到当我运行时它只占用了大约12%的CPU。

我使用英特尔酷睿i7-3740QM @ 2.70GHz: https://www.cpubenchmark.net/cpu.php?cpu=Intel+Core+i7-3740QM+%40+2.70GHz&id=1481

所以,我假设这是因为Python的GIL导致我的脚本只运行一个核心。

在对Python中的并行处理进行一些研究后,我以为我通过使用这段代码找到了答案:

import sys
import multiprocessing as mp


Altitude = np.array([[550],[500],[450],[400],[350],[300]])

    if __name__ == "__main__":
    processes = 4
    p = mp.Pool(processes)
    mp_solutions = p.map(calc, Altitude)

这似乎不起作用。一旦我运行它,Jupyter就会变得很忙。我的第一个想法是它只是一个很高的计算级别所以它需要很长时间,但后来我查看了我的CPU使用情况,虽然有多个Python进程实例,但没有一个使用任何CPU。

我无法弄清楚这是什么原因。我也发现了这篇文章并尝试使用他们的代码,但它只是做了同样的事情:

Multiple scipy.integrate.ode instances

非常感谢任何帮助。

谢谢!

0 个答案:

没有答案