线程队列queue的使用
其实线程队列queue跟进程Queue的用法一样。
一、先进先出
import queue
q = queue.Queue()
q.put('kobe')
q.put('cxk')
print(q.get())
print(q.get())
# print(q.get())
q.task_done()
q.task_done()
q.join() # 进行阻塞,直到队列里所有项目均被处理,且均被q.task_done(),才能通过。
结果:
kobe
cxk
二、先进后出(LifeQueue)
实现一个类似于堆栈的效果
import queue
q = queue.LifoQueue()
q.put('No.1')
q.put('No.2')
q.put('No.3')
print(q.get())
print(q.get())
print(q.get())
'''
结果:
No.3
No.2
No.1
'''
三、设置优先级队列(PriorityQueue)
import queue
q = queue.PriorityQueue()
# put进入一个元组,元组的第一个元素是优先级,(通常是数字,也可以是非数字之间的比较),数字较小优先级高
q.put((10,'a'))
q.put((5,'b'))
q.put((1,'c'))
print(q.get())
print(q.get())
print(q.get())
'''
结果:
(1, 'c')
(5, 'b')
(10, 'a')
'''
四、线程定时器(Timer)
from threading import Timer
import time
def func():
print('线程开始执行')
time.sleep(2)
print('线程结束')
t = Timer(4,func) # 通过定时器来控制开启线程的时间,时间到了,下面的代码才会执行。
t.start()
print('主')