Python中的queue模块中提供了同步的、线程安全的队列类,包括FIFO(先进先出)队列Queue,LIFO(后入先出)队列LifoQueue。这些队列都实现了锁原语(可以理解为;原子操作,即要么不做,要么都做完),能够在多线程中直接使用。
可以使用队列来实现线程中的同步。相关函数如下:
1.初始化Queue(MaxSize):创建一个先进先出的队列;
2.qsize(): 返回队列的大小;
3.empty(): 判断队列是否为空。
4. full(): 判断队列是否满了;
5. get(): 从队列中取最后一个数据;
6.put():j将一个数据放到队列中。
示例如下:
#encoding: utf-8
from queue import Queue
import time
import threading
def set_value(q):
index = 0
while True:
q.put(index)
index += 1
time.sleep(3)
def get_value(q):
while True:
print(q.get())
def main():
q = Queue(4)
t1 = threading.Thread(target=set_value,args=[q])
t2 = threading.Thread(target=get_value,args=[q])
t1.start()
t2.start()
if __name__ == '__main__':
main()