使用worker.run()进行多处理确实可以在serie中工作而不是并行工作?

时间:2016-12-05 18:00:00

标签: python-3.4 python-multiprocessing raspberry-pi3

我试图创建一个本质上像这样工作的程序:

import multiprocessing
import time

def worker(numbers):
    print(numbers)
    time.sleep(2)
    return

if __name__ =='__main__':
    multiprocessing.set_start_method("spawn")
    p1 = multiprocessing.Process(target=worker, args=([0,1,2,3,4],))
    p2 = multiprocessing.Process(target=worker, args=([5,6,7,8],))

    p1.start()
    p2.start()

    p1.join()
    p2.join()

    while(1):
        p1.run()
        p2.run()
        p1.join()
        p2.join()
        print('Done!')

第一次通过p#.start()调用进程时,它们是并行执行的。第二次通过p#.run()方法调用它们时,它们将按顺序执行。

如何确保后续方法调用也是并行执行的?

编辑:进程一起开始非常重要。过程1执行两次不会发生,而过程2只执行一次。

编辑:我还应该注意,此代码在raspberry pi v3模型B上运行。

1 个答案:

答案 0 :(得分:0)

据我所知,一个线程只能启动一次。之后,当您调用run方法时,它只是一个简单的函数。这就是它不能并行运行的原因。