Queue 队列对象 实现多线程

Queue 队列对象 实现多线程

使用Queue标准库,队列是线程间最常用的交换数据形式

import Queue

  • 初始化
    • class Queue.Queue(maxsize) FIFO先进先出
  • 包中常用的方法:
Queue.qsize()    #   返回队列的大小
Queue.empty()   #  如果队列为空,返回True,反之返回False
Queue.full()  #  如果队列满了,返回True,反之返回False
# Queue.full 与 maxsize  大小对应
Queue.get([block[, timeout]])  #  获取队列,timeout等待时间
Queue.task_done() #  当queue使用get方法时,队列数目不会减1,所以后面要加上task_done使数目减1。(注:put方法会使队列加1)
# task_done()一定要放在所有put后面
Queue.join() #  把子线程加入到主线程堵塞(在本文末尾详细演示)
  • 创建一个“队列”对象
import Queue
myqueue = Queue.Queue(maxsize = 10)

将一个值放入队列中

myqueue.put(10)

将一个值从队列中取出

myqueue.get()

多线程编程中,用法演示:

self.url_queue = .... #省略

t = threading.Thread(target=self.save_content)
t.setDaemon(True)    #  把子线程设置为守护线程,该线程不重要,主线程结束,子线程立即结束。(如果想让主线程等待子线程,后面要使用join方法,让主线程等待堵塞)
t.start()
for q in self.url_queue:
  q.join()   #让主线程等待堵塞,等待队列的任务

你可能感兴趣的:(Queue 队列对象 实现多线程)