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

Python多进程中Queue队列元素无法被子进程获取问题

问题原因及解决方法
  • 问题根源:你用的queue.Queue是线程间通信专用的队列,不支持跨进程共享数据。多进程启动后,子进程会复制主进程的内存空间,传入的队列实际是子进程自己的独立副本,和主进程的队列完全没关系。主进程往自己的队列塞元素,子进程的队列始终是空的,所以qsize()一直显示0。

  • 解决方法:替换成multiprocessing.Queue,这是专门为多进程通信设计的队列,底层通过管道和锁机制实现进程间的数据传递。

修改后的代码:

from multiprocessing import Process, Queue  # 导入多进程专用的Queue
from time import sleep

def x(q):
    while True:
        print(q.qsize())
        sleep(1)

q = Queue()
p = Process(target=x, args=(q,))
p.start()
while True:
    sleep(1)
    q.put(1)

补充说明:

  • multiprocessing.Queue的qsize()返回值不一定绝对准确,因为调用方法和实际操作队列之间,可能有其他进程修改队列状态。
  • 如果需要更严谨的进程同步逻辑,可以配合multiprocessing.Lock,或者使用JoinableQueue处理任务完成后的通知。

内容的提问来源于stack exchange,提问作者RichardS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:25:19