`
m4774411wang
  • 浏览: 111820 次
  • 性别: Icon_minigender_1
  • 来自: 南昌
社区版块
存档分类
最新评论

python queue模块的特点

阅读更多

python queue 模块 有三种队列

python queue模块的FIFO队列先进先出。LIFO类似于堆。即先进后出。还有一种是优先级队列级别越低越先出来。

针对这三种队列分别有三个构造函数

class Queue.Queue(maxsize) FIFO

class Queue.LifoQueue(maxsize) LIFO

class Queue.PriorityQueue(maxsize) 优先级队列

介绍一下此包中的常用方法

Queue.qsize()
返回队列的大小

Queue.empty()
如果队列为空,返回True,反之False

Queue.full()
如果队列满了,返回True,反之False。。queue.full 与 maxsize 大小对应

Queue.get([block[, timeout]])
获取队列,timeout等待时间

Queue.get_nowait()
相当Queue.get(False). 非阻塞

Queue.put(item)
写入队列,timeout等待时间

Queue.put_nowait(item)
相当Queue.put(item, False).

Queue.task_done()
在完成一项工作之后,Queue.task_done() 函数向任务已经完成的队列发送一个信号。

Queue.join()
实际上意味着等到队列为空,再执行别的操作


#-*- coding:utf-8 -*-

import Queue

import threading

import time

import random

q = Queue.Queue(0) #当有多个线程共享一个东西的时候就可以用它了

NUM_WORKERS = 3

class MyThread(threading.Thread):

def __init__(self,input,worktype):

self._jobq = input

self._work_type = worktype

threading.Thread.__init__(self)

def run(self):

while True:

if self._jobq.qsize() > 0:

job = self._jobq.get()

worktype = self._work_type

self._process_job(job,worktype)

else:break

def _process_job(self,job,worktype):

doJob(job)



def doJob(job):

time.sleep(random.random() * 3)

print "doing",job



if __name__ == '__main__':

print "begin ...."

for i in range(NUM_WORKERS * 2):

q.put(i) #放入到任务队列中去

print "job q size:",q.qsize()

for x in range(NUM_WORKERS):

MyThread(q,x).start()

看完上面再结合下python 多线程应用 的例子会更好的理解!

0
0
分享到:
评论

相关推荐

    Python Queue模块详细介绍及实例

    Python Queue模块 Python中,队列是线程间最常用的交换数据的形式。Queue模块是提供队列操作的模块,虽然简单易用,但是不小心的话,还是会出现一些意外。 创建一个“队列”对象 import Queue q = Queue.Queue...

    Python3 queue队列模块详细介绍

    Python3的`queue`模块是线程安全的数据结构,它实现了多线程环境下的队列操作,主要用于在并发环境中管理任务和数据交换。队列在计算机科学中是一种基础数据结构,遵循特定的出队和入队规则,如先进先出(FIFO)、...

    python队列queue模块详解

    Python的`queue`模块是设计用于多线程和多进程环境中的并发数据结构,它提供了线程安全的数据访问。队列是一种先进先出(FIFO)的数据结构,常用于线程间的通信,确保数据的有序处理。在Python中,`queue`模块提供了...

    Python Queue模块详解

    Queue模块是提供队列操作的模块,虽然简单易用,但是不小心的话,还是会出现一些意外。 创建一个“队列”对象 import Queue q = Queue.Queue(maxsize = 10) Queue.Queue类即是一个队列的同步实现。队列长度可为无限...

    Python Queue(队列).docx

    Python的`Queue`模块是线程安全的数据结构,主要用于多线程环境中的数据共享和通信。这个模块提供了三种不同类型的队列:FIFO(先进先出)、LIFO(后进先出)和Priority(优先级),每种都有其特定的应用场景。 1. ...

    python 队列Queue的使用 python2例程展示了队列Queue的使用过程,供学习参考使用

    Python中的`queue`模块提供了多种类型的队列,包括`Queue`(默认限制大小)、`LifoQueue`(后进先出,类似堆栈)和`PriorityQueue`(优先级队列)。这些队列都实现了线程安全的`put()`和`get()`方法,用于添加和获取...

    Queue 实现生产者消费者模型(实例讲解)

    Python Queue模块有三种队列及构造函数: 1、Python Queue模块的FIFO队列先进先出。 class Queue.Queue(maxsize) 2、LIFO类似于堆,即先进后出。 class Queue.LifoQueue(maxsize) 3、还有一种是优先级队列级别越低越...

    【Python资源】 通过 queue 队列及时刷新 tkinter 界面显示时间的 demo 案例

    这个 Python Demo 演示了如何结合 queue 模块和 tkinter 库来创建一个能够即时更新显示时间的图形用户界面(GUI)。通过 queue 队列,我们可以将更新 GUI 的任务安全地传递给主线程,从而避免因为直接在子线程中更新...

    python队列Queue的详解

    Python中的`Queue`模块提供了线程安全的队列实现,这对于多线程环境下的数据同步和通信至关重要。队列是一种先进先出(FIFO)的数据结构,它遵循“先入先出”的原则,即最早放入队列的元素最早被取出。`Queue`模块...

    python模块

    * pickle: pickle模块被用来序列化python的对象到bytes流,从而适合存储到文件,网络传输,或数据库存储。(pickle的过程也被称serializing,marshalling或者flattening,pickle同时可以用来将bytes流反序列化为...

    python模块详解

    python模块详解 各个模块的详解 核心模块 1.1. 介绍 1.2. _ _builtin_ _ 模块 1.3. exceptions 模块 1.4. os 模块 1.5. os.path 模块 1.6. stat 模块 1.7. string 模块 1.8. re 模块 1.9. math 模块 1.10....

    python使用Queue在多个子进程间交换数据的方法

    Python的`multiprocessing`模块提供了解决方案,其中`Queue`类允许我们在多个子进程中安全地交换数据。本篇文章将深入探讨如何使用`Queue`实现进程间的数据交互。 首先,让我们了解`multiprocessing`模块。它是...

    python模块介绍大全

    ### Python模块介绍大全 Python作为一门强大的编程语言,其丰富的标准库是其一大特色。本文将根据提供的部分内容,深入解析Python中的多个模块及其用途,帮助读者更好地理解和掌握这些工具。 #### 一、数据持久化...

    python 内置模块详解

    Python内置模块是Python标准库的一部分,它们提供了许多预先编写的函数和类,使得开发者能够方便地进行各种操作。本文将详细介绍几个常用的内置模块,包括random、collections和queue。 首先,让我们来看看`random`...

    基于python的Queue-Basic-List.md

    `queue.Queue`是Python标准库中用于实现同步队列的标准模块。它主要用于多线程环境中,确保数据安全地在不同线程间传递。 - **构造函数**:`queue.Queue(maxsize=0)`,其中`maxsize`指定队列的最大大小,默认为0...

    Python进程Process模块-Python零基础入门教程.pdf

    【Python进程Process模块】是Python中用于处理进程的模块,它是多进程编程的基础。在操作系统中,进程是对各种资源管理的单位,包括内存、网络接口等。一个进程可以包含多个子进程,每个进程都有自己的独立内存空间...

Global site tag (gtag.js) - Google Analytics