python queue 队列

线程优先级队列( Queue):

Python 的 Queue 模块中提供了同步的、线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列 PriorityQueue。

 

1、创建一个队列对象,可选参数maxsize来设定队列长度。如果maxsize小于1就表示队列长度无限

q = queue.Queue(maxsize=2) #先进先出队列
q1 = queue.LifoQueue() #先进后出队列

  

 

2、队列的读取和写入

q.put(6)
print(q.get())    #block默认值为True 表示 一直等待队列中有数据后再获取数据
print(q.get(False))  #block设置False后,队列为空 直接报错  _queue.Empty
print(q.get(timeout=10.0))   #设置超时时间,超时后报错 _queue.Empty

  

 

3、队列判空、满、以及获取队列长度

q.full()  #判断队列是否满
q.empty()# 判断队列是否为空
q.qzize() # 返回当前队列长度

 4、使用queue 实现进程间的通信

from multiprocessing import Process, Queue
import os

# 写数据进程执行的代码:
def write(q):
    print('我是写进程: %s' % os.getpid())
    q.put('写进程%s,写的一条数据'%os.getpid())

# 读数据进程执行的代码:
def read(q):
    print('我是读进程: %s' % os.getpid())
    print('我是读进程%s,获取了:%s'%(os.getpid(),q.get()))
if __name__=='__main__':
    # 父进程创建Queue,并传给各个子进程:
    q = Queue()
    pw = Process(target=write, args=(q,))
    pr = Process(target=read, args=(q,))
    # 启动子进程pw,写入:
    pw.start()
    # 启动子进程pr,读取:
    pr.start()
    # 等待pw结束:
    pw.join()
    # 等待pr结束
    pr.join()

 


posted @ 2021-10-07 15:56  昆虫白  阅读(466)  评论(0)    收藏  举报