Python中的多处理.为什么没有加速?

Kyl*_*ell 0 python parallel-processing ipython multiprocessing python-3.x

我试图掌握Python中的多处理.我从创建此代码开始.它只是计算整数i的cos(i),并测量一个人使用多处理时和一个人不使用时的时间.我没有观察到任何时差.这是我的代码:

    import multiprocessing
    from multiprocessing import Pool
    import numpy as np
    import time


    def tester(num):
        return np.cos(num)


    if __name__ == '__main__':


        starttime1 = time.time()
        pool_size = multiprocessing.cpu_count()
        pool = multiprocessing.Pool(processes=pool_size,
                            )
        pool_outputs = pool.map(tester, range(5000000))
        pool.close()
        pool.join()
        endtime1 = time.time()    
        timetaken = endtime1 - starttime1  

        starttime2 = time.time()
        for i in range(5000000):
            tester(i)
        endtime2 = time.time()
        timetaken2 = timetaken = endtime2 - starttime2

        print( 'The time taken with multiple processes:', timetaken)
        print( 'The time taken the usual way:', timetaken2)
Run Code Online (Sandbox Code Playgroud)

我观察到两次测量之间没有(或非常小的)差异.我正在使用8芯机器,所以这是令人惊讶的.我在代码中做错了什么?

请注意,我从中学到了所有这些. http://pymotw.com/2/multiprocessing/communication.html

我理解"joblib"对于像这样的例子可能更方便,但是这个需要应用的最终事情不适用于"joblib".

650*_*502 7

你的工作似乎是单个cos值的计算.与与奴隶通信的时间相比,这基本上是不明显的.

尝试进行5次1000000 cos值的计算,你应该看到它们并行运行.