pythonqueue函数_Python的Queue模块中的Queue类中的qsize和Empty函数都是不准确的嘛?...

博主在使用Python的Queue模块实现生产者消费者模型时遇到问题,发现qsize()返回的队列深度和empty()判断的队列状态与实际情况不符。在多线程环境下,qsize()可能存在不准确性。代码示例中展示了生产者和消费者线程的运行情况,qsize()在放入消息后仍显示为0。博主寻求帮助以理解这一现象并解决代码中的问题。
摘要由CSDN通过智能技术生成

我模拟了一个生产者和消费者的程序,但是我发现我在调用qsize查看队列深度和empty判断队列是否是空的时候,总是跟实际的队列深度不符。

我放入一个消息以后,得到的队列深度还是0,我看官方的说法是qsize是不准确的,在别的地方还看到qsize在单线程的环境中运行比较准确,别多线程的环境下运行不太准确。但是我想不会一直不准确,我想问问大家我的代码是不是哪里出了问题。谢谢了。

我的代码如下:

# -*- coding:utf-8 -*-

from Queue import Queue

from random import randint

from time import sleep,ctime

import threading

#创建生产者线程

class writer(threading.Thread):

def __init__(self,queue,nloops):

threading.Thread.__init__(self)

self.queue=queue

self.nloops=nloops

def run(self):

print '生产者线程运行开始',ctime()

sleep(1)

for i in range(self.nloops):

self.writerq()

print '生产者线程运行结束',ctime()

def writerq(self):

self.queue.qsize()

self.queue.put('xxx',1)

sleep(randint(2,5))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值