线程队列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('主')
posted @ 2019-09-21 18:52  tomjoy  阅读(2632)  评论(0编辑  收藏  举报