python并行化随机森林算法效率反而降低了


随机森林算法 是CPU密集型算法,每次建树都要耗很多计算资源。
用Python实现了单进程单线程的随机森林之后,建一棵树平均时间为25s,考虑到Python的线程只能利用单核,所以想用多进程的方式来实现并行。
一开始用multiprocess库试过,4个核的利用率都飙到100%了,但是时间反而翻倍了,原本以为是因为资源共享(小白猜想)导致计算过程一直在切换或等待,后来用MPI的策略实现,发现进程开越多,建树还是多了一倍以上,但CPU四个核都是100%。

我不知道为什么开多进程做同样的事情反而比一个进程做多次还要慢,4个核都跑到100%了为什么总的速度没提上去?朋友能不能给个思路?

ps: mpi 我用的是python的mpi4py库,跑的是单机多进程,没有试过多机。
补充:我试过用别人的电脑跑,开四个进程时间减少了一半。我们电脑的差异大概如下:
他的电脑:Ubuntu 14, i5-4210U
我的电脑:Fedora 21, i5-2450M

mpi python2.7

karlmao 9 years, 10 months ago

你用的是i5的双核吗,i5双核4线程中有两条线程是模拟出来的

紅帽哥布林 answered 9 years, 10 months ago

Your Answer