python 归纳 (十二)_并发队列Queue的使用

# -*- coding: UTF-8 -*-
"""
学习队列 Queue

总结:
   1. 队列可以设置大小,也可以无限大小
   2. 空了,满了,读写时可以阻塞,也可以报错
   3. 队列中可以存储不同的数据类型对象
   4. 队列的实现大量用到 线程模块 threading ,说明适用多线程之间的数据共享操作
      不确定是否适合多进程之间的数据共享操作
   5. 队列的实现用到锁操作,acquire,release,wait,notify 不需要在个人代码中使用

使用:
   1. 创建队列对象 myqueue = Queue.Queue(maxsize=2)
   2. 往队列写数据 myqueue.put(data)
   3. 从队列读数据 myqueue.get()
"""
import Queue

# size<=0,表示队列无限长度
myqueue = Queue.Queue(maxsize=2)

myqueue.put(5)
myqueue.put("ab")  # 支持不同的类型
print "flag1"
# myqueue.put("cd")      # 队列满了,会阻塞
# myqueue.put("cd",False)  # 队列满了,会报错

print "flag2"
print myqueue.qsize()  # 队列大小
print myqueue.get()
print myqueue.get()
print myqueue.qsize()  # 队列大小

print myqueue.get()       # 队列空了,会阻塞
print myqueue.get(True)   # 队列空了,会阻塞
print myqueue.get(False)  # 队列空了,抛出异常

print "flag3"

"""
Out:

flag1
flag2
2
5
ab
0
阻塞....
"""

原文地址:https://www.cnblogs.com/sunzebo/p/9612273.html

时间: 2024-10-05 03:43:52

python 归纳 (十二)_并发队列Queue的使用的相关文章

python 归纳 (十四)_队列Queue实现生产者消费者

# -*- coding: UTF-8 -*- """ 多线程的生产者,消费者 使用队列Queue """ import Queue import threading import time import random queue = Queue.Queue(3) # 创建3个大小的队列 class Producer(threading.Thread): """ 生产者,往队列中写数据 ""&qu

python 归纳 (十五)_多进程使用Pool

1 usePool.py #coding: utf-8 """ 学习进程池使用 multiprocessing.Pool 总结: 1. Pool 池用于处理 多进程,并不是多线程 2. 池有大小的概念 3. 并不是所有的子进程添加完了,才开始启动子进程. 当第一个进程添加到池中的时候,马上就启动了 使用: 1. 创建进程池对象 pool = multiprocessing.Pool(processes = 3) 2. 往池中添加进程 主要:pool.apply_async(f

数据结构课程设计题目十二_计算机学院学生会的打印机(优先队列)

本文出自:http://blog.csdn.net/svitter 题目12:计算机学院学生会的打印机(优先队列) 小明抱怨学生会的打印机不符合FIFO的原则,看到很多在他后面来打印的同学比他先打印出来.五分钟前,小明的文件就是下一个候选的,如今小明的文件又排到了后面.学生会的同学给小明解释说,学生会的打印机不是採用传统的队列方式,而是採用一种自定义的优先队列方式:每一个要打印的文件被赋予了一个从1到9的优先级(9最高,1最低).打印规定例如以下: 将队列中要打印的文件f从队列中拿出来: 假设在

[CSAPP笔记][第十二章并发编程]

第十二章 并发编程 如果逻辑控制流在时间上是重叠,那么它们就是并发的(concurrent).这种常见的现象称为并发(concurrency). 硬件异常处理程序,进程和Unix信号处理程序都是大家熟悉的例子. 我们主要将并发看做是一种操作系统内核用来运行多个应用程序的机制. 但是,并发不仅仅局限于内核.它也可以在应用程序中扮演重要的角色. 例如 Unix信号处理程序如何允许应用响应异步事件 例如:用户键入ctrl-c 程序访问虚拟存储器的一个未定义的区域 其他情况 访问慢速I/O设备 当一个应

初学 Python(十二)——高阶函数

初学 Python(十二)--高阶函数 初学 Python,主要整理一些学习到的知识点,这次是高阶函数. #-*- coding:utf-8 -*- ''''' 话说高阶函数: 能用函数作为参数的函数 称为高阶函数 ''' #函数作参 def f(x): return x*x #map函数为内置函数,意思为将第二个参数的list作用到f函数中 #最后的结果为一个list print map(f,[1,2,3,4,5]) #reduce函数为内置函数,意思将第二参数的序列作用到add函数值 #将结

第十二章 并发编程 学习笔记

第十二章 并发编程 进程是程序级并发,线程是函数级并发. 三种基本的构造并发程序的方法: 进程:每个逻辑控制流是个一个进程,由内核进行调度和维护. I/O多路复用:应用程序在一个进程的上下文中显式地调度他们自己的逻辑流. 线程:运行在单一进程上下文中的逻辑流,由内核进行调度. 12.1 基于进程的并发编程 构造并发程序最简单的方法就是用进程. 使用大家都很熟悉的函数例如: fork exec waitpid 关于在父.子进程间共享状态信息:共享文件表,但不共享用户地址空间. 进程又独立的地址空间

第十二章 并发编程

第十二章 并发编程 三种基本的构造并发程序 进程:每个逻辑控制流是一个进程,由内核进行调度,进程有独立的虚拟地址空间 I/O多路复用:逻辑流被模型化为状态机,所有流共享同一个地址空间 线程:运行在单一进程上下文中的逻辑流,由内核进行调度,共享同一个虚拟地址空间 常用函数: fork exec waitpid 基于I/O多路复用的并发事件驱动服务器 事件驱动程序:将逻辑流模型化为状态机. 状态机: 状态 输入事件 转移 对于状态机的理解,参考EDA课程中学习的状态转换图的画法和状态机. 整体的流程

Python进阶(十二)----re模块

Python进阶(十二)----re模块 一丶re模块 ? re模块是python将正则表达式封装之后的一个模块.正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行. #正则表达式: 从一串字符中,找出你想要的字符串. import re ### 单个元字符的匹配 # \W 除了数字 ,字母,中文, 下划线 print(re.findall('\W','dsadas1231 +1-+2*/,.')) # \w 匹配中文,数字,字母,下划线 print(re.findall('\w

python 3.x 学习笔记16 (队列queue 以及 multiprocessing模块)

1.队列(queue) 用法: import queue q = queue.Queue() #先进先出模式 q.put(1) #存放数据在q里 作用: 1)解耦    2)提高效率 class queue.Queue(maxsize=0)                        #先入先出class queue.LifoQueue(maxsize=0)                  #后进先出 class queue.PriorityQueue(maxsize=0)