Python多进程共享Queue无法输出连续数值问题求助
问题解决:多进程Queue输出重复数值的原因及修复
你的问题并非同步问题,而是代码里的语法错误:a =+1不是自增操作,这行代码是把+1(即数值1)赋值给变量a,导致a永远停留在0,队列里持续放入的都是0,自然输出全是重复的0。
修正后的代码
import multiprocessing as mp def func1(queueFrames): a = 0 while True: queueFrames.put(a) a += 1 # 改为正确的自增语法 # 可选:添加小延迟避免输出过快 # mp.sleep(0.1) def func2(queueFrames): while True: print(queueFrames.get()) if __name__ == '__main__': queueFrames = mp.Queue() p1 = mp.Process(target=func1, args=(queueFrames,)) p1.start() p2 = mp.Process(target=func2, args=(queueFrames,)) p2.start()
扩展到三个函数的说明
如果要让三个函数共享Queue,只需按照同样的方式创建第三个进程,将同一个queueFrames对象传入即可。multiprocessing.Queue本身是进程安全的,单纯的put()和get()操作不需要额外加锁。
内容的提问来源于stack exchange,提问作者user12794379
相关产品推荐
相关产品推荐

