使用 worker.run() 的多处理确实以串行而不是并行方式工作?

Multiprocessing with worker.run() does work in serie instead of parallel?

我正在尝试创建一个本质上是这样工作的程序:

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 上。

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