- 浏览: 108491 次
- 性别:
- 来自: 南昌
最新评论
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 多线程应用
的例子会更好的理解!
发表评论
-
python classmethod类方法
2013-06-04 21:23 731python classmethod类方法的要点主要有3个: ... -
分享python ASCII返回对应的值(chr)
2013-06-04 21:17 756比如我们知道大写的A的ASCII码为 65,小写a的ASCI ... -
分享python 判断对象是否可以调用(callable)
2013-06-04 21:12 679我们需要判断python中的对象是否可以调用,可以用内置方法 ... -
python unittest单元测试方法和用例
2013-06-04 21:08 1037python内部自带了一个单元测试的模块,pyUnit也就是 ... -
python 字典(dict)get方法应用
2013-06-03 22:14 778如果我们需要获取字典值的话,我们有两种方法,一个是通过dic ... -
python 正则表达式re findall
2013-06-03 22:13 932python 正则表达式 re findall 方法能够以列 ... -
python中文分词
2013-06-03 22:13 976python做SEO相关事情,我 ... -
python yield和generators(生成器)
2013-06-03 22:12 715在python中,yield就是这样的一个生成器。 yie ... -
fabric 批量执行服务器任务和自动化运维管理
2013-06-03 22:12 821上节我们已经把fabric给 ... -
分享fabric的安装和配置
2013-05-23 20:04 874fabric的安装可以选择用python的pip安装或者eas ... -
分享python 私有属性和方法
2013-05-23 20:04 678python默认的成员函数和 ... -
python 怎么自定义异常
2013-05-23 20:03 809如果你需要自定义异常 ... -
分享python 字符串(string) format介绍和代码
2013-05-23 20:02 737你可以用字符串的format方法来格式化输出字符串。 比如; ... -
python 包的定义,结构,导入过程
2013-05-23 20:01 647假设你想设计一个模块集(也就是一个“python 包” ... -
分享python del语句的知识点
2013-05-15 20:27 721python del方法从列表中删除某个项目索引,这个和列表 ... -
python filter, map, 和reduce
2013-05-15 20:26 646filter(function, sequence):对se ... -
python pass (空操作)语句
2013-05-15 20:25 879pass语句通常什么都不做。它可以表示语句,但这个程序不需要 ... -
python break和continue语句
2013-05-15 20:25 736break语句,就像在C语言中,打破了最小封闭for或whi ... -
分享python range方法
2013-05-11 22:42 777如果你需要遍历一个数字序列,内置函数range()就派上用场 ... -
分享下python 字符串特点
2013-05-11 22:42 691除了数值,Python可以操作字符串,它可以表现在以下几个方 ...
相关推荐
主要介绍了Python Queue模块详细介绍及实例的相关资料,需要的朋友可以参考下
queue是python中的标准库,俗称队列。这篇文章给大家介绍了Python3 queue队列模块,包括模块中的常用方法及构造函数,需要的朋友参考下吧
Queue模块是提供队列操作的模块,虽然简单易用,但是不小心的话,还是会出现一些意外。 创建一个“队列”对象 import Queue q = Queue.Queue(maxsize = 10) Queue.Queue类即是一个队列的同步实现。队列长度可为无限...
主要为大家详细介绍了python队列queue模块的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Queue模块实现了多生产者、多消费者队列。当必须在多个线程之间安全地交换信息时,它在线程编程中特别有用,``实现了所有必需的锁定语义。 一、该模块实现了三种类型的队列,它们的区别仅在于检索条目的顺序: 1、...
Python Queue模块有三种队列及构造函数: 1、Python Queue模块的FIFO队列先进先出。 class Queue.Queue(maxsize) 2、LIFO类似于堆,即先进后出。 class Queue.LifoQueue(maxsize) 3、还有一种是优先级队列级别越低越...
* pickle: pickle模块被用来序列化python的对象到bytes流,从而适合存储到文件,网络传输,或数据库存储。(pickle的过程也被称serializing,marshalling或者flattening,pickle同时可以用来将bytes流反序列化为...
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 Demo 演示了如何结合 queue 模块和 tkinter 库来创建一个能够即时更新显示时间的图形用户界面(GUI)。通过 queue 队列,我们可以将更新 GUI 的任务安全地传递给主线程,从而避免因为直接在子线程中更新...
本文实例讲述了Python进程间通信Queue消息队列用法。分享给大家供大家参考,具体如下: 进程间通信-Queue Process之间有时需要通信,操作系统提供了很多机制来实现进程间的通信。 1. Queue的使用 可以使用...
主要介绍了Python中使用Queue模块和Condition对象进行线程同步的方法,配合threading模块下的线程编程进行操作的实例,需要的朋友可以参考下
在Python中我们主要是通过thread和 threading这两个模块来实现的,其中Python的threading模块是对thread做了一些包装的,可以更加方便的被使用,所以我们使用 threading模块实现多线程编程。这篇文章我们主要来看看...
另请参见mutex和Queue模块。 该dummy_threading模块适用于threading因thread缺失而无法使用的情况 。 注意: 从Python 2.6开始,该模块提供 符合 PEP 8的别名和属性,以替换camelCase受Java的线程API启发的名称。此...
Queue 模块 o 3.4. thread 模块 o 3.5. commands 模块 o 3.6. pipes 模块 o 3.7. popen2 模块 o 3.8. signal 模块 4. 数据表示 o 4.1. 概览 o 4.2. array 模块 o 4.3. struct 模块 o 4.4. xdrlib 模块 o 4.5. ...
可以使用multiprocessing模块的Queue实现多进程之间的数据传递,Queue本身是一个消息列队程序,首先用一个小实例来演示一下Queue的工作原理: import multiprocessing q = multiprocessing.Queue(3) # 初始化的...
一 multiprocessing模块介绍 ...multiprocessing模块的功能众多:支持子进程、通信和共享数据、执行不同形式的同步,>提供了Process、Queue、Pipe、Lock等组件。 需要再次强调的一点是:与线程不同,
1.3 特点 1.3.1 高级 1.3.2 面向对象 1.3.3 可升级 1.3.4 可扩展 1.3.5 可移植性 1.3.6 易学 1.3.7 易读 1.3.8 易维护 1.3.9 健壮性 1.3.10 高效的快速原型...