与普通代码一起运行时,为什么我的多处理代码运行速度较慢?

时间:2019-05-06 07:46:05

标签: python-3.x multiprocessing

我现在正在测试多处理编程,并且能够大大减少计算时间。但是,如果我两个脚本都一个接一个地运行,那么多处理的效果会更差。

class Base():
    def __init__(self):
        ...
    def my_method(self):
        ...
    def my_method(self):
        ...

test=Base()

"Multiprocessing part"

def multiprocessing_func(i,returner):
    returner[i]=test.my_method()

if __name__ == '__main__':
    starttime = time.time()
    manager = multiprocessing.Manager()
    returner=manager.dict()
    processes = []
    for i in range(0,10):
        p = multiprocessing.Process(target=multiprocessing_func,args= (i,returner))
        processes.append(p)
        p.start()
    for process in processes:
        process.join()
    print('Multi Core Process took {} seconds'.format(time.time() - starttime))
    a=returner.values()

"Single processing part calling the same method through another method"
data=test.standardize(Base.my_method,10)

该示例基本上只是一个循环,可以多次调用同一方法。

简单的单个处理每个循环大约需要10秒,而10个循环大约需要110秒。 多处理可以在14秒内运行全部10个。

但是,如果一个接一个地运行,则单个处理仍将具有相同的性能,而多处理部分则需要130-160秒才能运行。

那是为什么? P.s.预先谢谢你

0 个答案:

没有答案