from queue import Queue
import random
import threading
import time
q = Queue(4)
for x in range(5):
try:
q.put(x,block=False)
except:
break
print(q.qsize())
if q.full():
print('满了')
for x in range(4):
try:
value = q.get(block=False)
except:
break
print(value)
if q.empty():
print('空了')
def add_vaule(q):
while True:
q.put(random.randint(0,10))
time.sleep(1)
def get_value(q):
while True:
value = q.get()
print('获取到的值是:%d'%value)
def main():
q = Queue(10)
th1 = threading.Thread(target=add_vaule,args=[q])
th2 = threading.Thread(target=get_value,args=[q])
th1.start()
th2.start()
if __name__ == "__main__":
main()
线程安全的队列Queue:
get():从队列中取最后一个数据。默认情况下是阻塞的,也就是说如果队列已经空了,那么再调用就会直至阻塞,直到有新的数据添加进来。也可以使用’block=Fauls’来关掉阻塞
put():同上