You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 02:06:24