使用 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 上。
据我所知,一个线程只能启动一次。之后当你调用 运行 方法时,它只是一个简单的函数。这就是为什么它不是 运行 并行。
我正在尝试创建一个本质上是这样工作的程序:
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 上。
据我所知,一个线程只能启动一次。之后当你调用 运行 方法时,它只是一个简单的函数。这就是为什么它不是 运行 并行。