python 队列 生产者消费者_python--队列、生产者消费者模型

队列:

import queue

q = queue.Queue() #先入先出

print(q.empty()) #判断是否为空,空返回True

q.put("d1")

q.put("d2")

q.put("d3")

print(q.full()) #判断是否满,满返回True

print(q.get()) #d1

print(q.get()) #d2

print(q.get()) #d3

print(q.get(timeout=1)) #阻塞 可以使用q.get(timeout = 1)设置超时来解决阻塞问题,抛出queue.Empty异常

print(q.get_nowait()) #接上一行的例子,还可以设置不要等待,没有数据即刻抛出异常

print(q.qsize()) #或者使用if判断qsize是否等于0

print(q.get(block=False)) #block参数False也可以解决程序阻塞问题

#设置具有长度限制的队列

q = queue.Queue(maxsize=3) #长度为3

q.put(1)

q.put(2)

q.put(3)

q.put(4, block=False) #这里程序又阻塞了,所以可以使用block,timeout参数解决阻塞问题,异常queue.Full

q = queue.PriorityQueue() #设置优先级队列,数字小的优先级高

q.put((1, "King"))

q.put((-1, "Jeson"))

q.put((10, "Tim"))

q.put((5, "Mike"))

# q = queue.LifoQueue() #设置后入先出队列

# q.put(1)

# q.put(2)

# q.put(3)

# print(q.get())

# print(q.get())

# print(q.get())

生产者消费者模型:

import threading

import time

import queue

q = queue.Queue(maxsize=10)

def producer(name): #生产者

count = 1

while True:

q.put("骨头%s" % count)

print("生产了骨头", count)

count += 1

time.sleep(0.5)

def consumer(name): #消费者

while True:

print("[%s]取到[%s]并且吃了它..." % (name, q.get()))

time.sleep(1)

p = threading.Thread(target=producer, args=("Tim",))

c1 = threading.Thread(target=consumer, args=("King",))

c2 = threading.Thread(target=consumer, args=("Wang",))

p.start()

c1.start()

c2.start()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值