我试图创建一个本质上像这样工作的程序:
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上运行。
答案 0 :(得分:0)
据我所知,一个线程只能启动一次。之后,当您调用run方法时,它只是一个简单的函数。这就是它不能并行运行的原因。