python Queue模块用于多线程通信

# -*-coding:utf-8 -*-
import Queue
import threading
import time
q = Queue.Queue(100000)

def producer():
    for i in range(1000):
        q.put(i)
        time.sleep(0)

def consumer():
    for i in range(1000):
        print q.get(), q.qsize()
        time.sleep(0)

threads = []

th = threading.Thread(target=consumer)
rh = threading.Thread(target=producer)
threads.append(rh)
threads.append(th)

for t in threads:
    t.start()

Queue模块包括Queue队列,可用于多线程的通信,上面的代码是消费者和生产者的示例程序。

需要注意的是,当消费者线程,读取Queue时Queue.get()若Queue为空获取不到内容,线程会阻塞在这里,直到成功获取内容。

时间: 2024-12-23 02:02:25

python Queue模块用于多线程通信的相关文章

Python Queue模块

创建一个"队列"对象 import Queuemyqueue = Queue.Queue(maxsize = 10) Queue.Queue类即是一个队列的同步实现.队列长度可为无限或者有限.可通过Queue的构造函数的可选参数maxsize来设定队列长度.如果maxsize小于1就表示队列长度无限. 将一个值放入队列中 myqueue.put(10) 调用队列对象的put()方法在队尾插入一个项目.put()有两个参数,第一个item为必需的,为插入项目的值:第二个block为可选参

python Queue模块使用

Python中,队列是线程间最常用的交换数据的形式.Queue模块是提供队列操作的模块,虽然简单易用,但是不小心的话,还是会出现一些意外. 创建一个"队列"对象import Queueq = Queue.Queue(maxsize = 10)Queue.Queue类即是一个队列的同步实现.队列长度可为无限或者有限.可通过Queue的构造函数的可选参数maxsize来设定队列长度.如果maxsize小于1就表示队列长度无限. 将一个值放入队列中q.put(10)    put(item[

用threading和Queue模块实现多线程的端口扫描器

一.Queue模块基础 q = Queue.Queue()    q.qsize()           返回队列的大小  q.empty()         如果队列为空,返回True,反之False  q.full()        如果队列满了,返回True,反之False q.full            与 maxsize 大小对应  q.get([block[, timeout]]) 获取队列,timeout等待时间  q.get_nowait()         相当q.get(

python queue 模块

1 queue 模块 分类(共同点if maxsize <=0 队列长度没有限制.) queue.Queue(maxsize =0)  First in first OUT(FIFO) queue.LifoQueue(maxsize=0)  后进先出(Last In First Out: LIFO)队列 PriorityQueue(maxsize=0) 优先级队列,比较队列中每个数据的大小,值最小的数据拥有出队列的优先权.数据一般以元组的形式插入,典型形式为(priority_number, d

python(nmap模块、多线程模块)

http://xael.org/pages/python-nmap-en.html       nmap模块 http://www.tutorialspoint.com/python/python_multithreading.htm   多线程 http://www.cnblogs.com/tqsummer/archive/2011/01/25/1944771.html 多线程

Python 单向队列Queue模块详解

单向队列Queue,先进先出 '''A multi-producer, multi-consumer queue.''' try: import threading except ImportError: import dummy_threading as threading from collections import deque from heapq import heappush, heappop from time import monotonic as time __all__ =

Python Queue实现生产与消费

Python Queue模块详解 from:https://blog.linuxeye.com/334.html Python中,队列是线程间最常用的交换数据的形式.Queue模块是提供队列操作的模块,虽然简单易用,但是不小心的话,还是会出现一些意外. 创建一个“队列”对象import Queueq = Queue.Queue(maxsize = 10)Queue.Queue类即是一个队列的同步实现.队列长度可为无限或者有限.可通过Queue的构造函数的可选参数maxsize来设定队列长度.如果

[py]py2自带Queue模块实现了3类队列

py2自带Queue实现了3类队列 先搞清楚几个单词 Queue模块实现了三类队列: FIFO(First In First Out,先进先出,默认为该队列), 我们平时泛指的队列, LIFO(Last In First Out,后进先出) 基于优先级的队列.以下为其常用方法: 队列一般有 push pop size empty等 先进先出 q = Queue.Queue(maxsize) 后进先出 a = Queue.LifoQueue(maxsize) 优先级 Queue.PriorityQ

python threading模块使用 以及python多线程操作的实践(使用Queue队列模块)

今天花了近乎一天的时间研究python关于多线程的问题,查看了大量源码 自己也实践了一个生产消费者模型,所以把一天的收获总结一下. 由于GIL(Global Interpreter Lock)锁的关系,纯的python代码处理一般逻辑的确无法活动性能上的极大提升,但是在处理需要等待外部资源返回或多用户的应用程序中,多线程仍然可以作为一个比较好的工具来进行使用. python提供了两个模块thread和threading 来支持python的多线程操作.通俗的讲一般现在我们只使用threading