天天看点

python爬虫-25-python多线程安全队列Queue详解

python爬虫-25-python多线程安全队列Queue详解

1、python之Queue介绍

Python中的queue模块中提供了同步的、线程安全的队列类,包括FIFO(先进先出)队列Queue,LIFO(后入先出)队列LifoQueue。这些队列都实现了锁原语(可以理解为原子操作,即要么不做,要么都做完),能够在多线程中直接使用。

2、python之Queue方法

  1. 初始化Queue(maxsize):创建一个先进先出的队列;
  2. 初始化LifoQueue(maxsize):创建一个先进后出的队列;
  3. qsize():返回队列的大小;
  4. empty():判断队列是否为空;
  5. full():判断队列是否满了;
  6. get():从队列中取最后一个数据;
  7. put():将一个数据放到队列中。

3、python之Queue实操

3.1 创建一个先进先出的队列

import queue
import random

q = queue.Queue(maxsize=5)  # 创建先进先出队列,并指定只能存5个数据

while True:
    if q.full():  # 判断队列是否满了
        print("队列满了呀,放不进来数据咯")
        break
    else:
        Jier = random.random()  # 生成一个随机数
        print("往队列q中存入了数据:{}".format(Jier))
        q.put(Jier)  # 存放数据

print("队列q的数据存储了{}个".format(q.qsize()))
while True:
    if q.empty():  # 判断队列是否空了
        print("队列q空了呀")
        break
    else:
        print("从队列q中取出了数据:{}".format(q.get()))  # 取出数据      

运行结果如下:

往队列q中存入了数据:0.16770815255552796
往队列q中存入了数据:0.6629318061550314
往队列q中存入了数据:0.1541872174654343
往队列q中存入了数据:0.6109450539369857
往队列q中存入了数据:0.23136112820862198
队列满了呀,放不进来数据咯
队列q的数据存储了5个
从队列q中取出了数据:0.16770815255552796
从队列q中取出了数据:0.6629318061550314
从队列q中取出了数据:0.1541872174654343
从队列q中取出了数据:0.6109450539369857
从队列q中取出了数据:0.23136112820862198
队列q空了呀      

从上面可以看到,数据确实是先存进队列的,先被取出来消耗掉了。

3.2 创建一个先进后出的队列

剩余内容请转至VX公众号 “运维家” ,回复 “186” 查看。

------ “运维家” ,回复 “186”  ------

------ “运维家” ,回复 “186”  ------

------ “运维家” ,回复 “186”  ------

运维工程师是干什么的,收单猫运维工程师,武威光伏运维工程师,西安运维交付工程师招聘,石家庄网络运维工程师招聘;