Python多处理 - 执行时间增加了,我做错了什么?

时间:2016-09-29 21:18:12

标签: python multiprocessing python-multiprocessing

我正在做一个简单的多处理测试,但似乎有些事情发生了。我使用Turbo Boost在i5-6200U 2.3 Ghz上运行。

from multiprocessing import Process, Queue
import time

def multiply(a,b,que): #add a argument to function for assigning a queue
    que.put(a*b) #we're putting return value into queue

if __name__ == '__main__':
    queue1 = Queue() #create a queue object
    jobs = []
    start_time = time.time()
#####PARALLEL####################################
    for i in range(0,400):
        p = p = Process(target= multiply, args= (5,i,queue1))
        jobs.append(p)
        p.start()

    for j in jobs:
        j.join()

    print("PARALLEL %s seconds ---" % (time.time() - start_time))
#####SERIAL################################
    start_time = time.time()
    for i in range(0,400):
        multiply(5,i,queue1)
    print("SERIAL %s seconds ---" % (time.time() - start_time))

输出:

PARALLEL 22.12951421737671 seconds ---
SERIAL 0.004009723663330078 seconds ---

非常感谢帮助。

1 个答案:

答案 0 :(得分:0)

这是一个(愚蠢的)代码的简短示例,它获得了很好的加速。正如评论中已经介绍的那样,它不会创建一个荒谬的进程数,并且与进程间通信开销相比,每个远程函数调用完成的工作量很高。

public class CustomRequest extends Request<NetworkResponse>