我模拟了一个生产者和消费者的程序,但是我发现我在调用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))