第二十一节 queue线程安全队列

 1 import queue
 2 import threading
 3 import time
 4 
 5 
 6 q = queue.Queue(5)#对生成的类对象指定最多可容纳元素
 7 q.empty()#判断队列元素个数是否为0
 8 
 9 def q_q ():
10     '''queue的基本函数使用'''
11     for x in range(1,10):
12         q.put(x*10)
13         #先进先出,第一个放进去的是10,第一个出来的也是10
14         if q.full():
15             print("队列满了")
16             for x in range(q.qsize()):
17                 print(q.get())
18             break
19 
20 
21 class q_qq(queue.Queue):
22     '''
23     get() 和 put() 方法中的block参数
24     get中队列空了,会阻塞线程进行
25     put中队列满了了,会阻塞线程进行
26     '''
27     # def __init__(self,q):
28     #     self.q = q
29     def get_value(self):
30         while 1:
31             print(q.get())
32     def put_value(self):
33         inde = 0
34         while 1 :
35             q.put(inde)
36             inde += 1
37             time.sleep(0.5)
38 
39 
40 def main():
41     q = q_qq(7)
42     t1 = threading.Thread(target = q.put_value)
43     t2 = threading.Thread(target = q.get_value)
44     t1.start()
45     t2.start()
46     
47 if __name__ == '__main__':
48     main()

 

posted @ 2020-03-16 21:46  kog_maw  阅读(133)  评论(0编辑  收藏  举报