Python常用库初探--Queue

Python里有一个常用的内置库,Queue,它是一个常规意义上的数据结构中的队列

既然同是队列,那它和Python内置的list,还有collections里的deque在使用上有什么差别呢?

list是python中常见的数据结构,使用非常广泛,但它在操作上更接近其它语言数组(array)的概念,而并不是严格意义上的队列。

collections里的deque则是一个功能完备的双端队列,支持从头尾两端进行插入、弹出操作。

最后是本文的Queue则是一个非常典型的FIFO结构,也就是一个严格意义上的队列。不仅如此,它还是线程安全的,即使用Mutex锁来保证多线程的安全操作。这也是它广泛用于生产消费者和维护爬虫中URL队列的原因。

接下来,利用一个例子来简单看看如何利用Queue来实现一个生产消费者的例子。

import queue
import threading
import time

q=queue.Queue()

def product(arg): 
    while True: 
        q.put(str(arg)+'资源')

def consumer(arg): 
    while True: 
        print(arg,q.get()) 
        time.sleep(2)
        
for i in range(7): 
    t=threading.Thread(target=product,args=(i,)) 
    t.start()
for j in range(24): 
    t=threading.Thread(target=consumer,args=(j,)) 
    t.start()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    aimaile阅读 26,725评论 6 427
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 12,230评论 1 118
  • 一.线程安全性 线程安全是建立在对于对象状态访问操作进行管理,特别是对共享的与可变的状态的访问 解释下上面的话: ...
    黄大大吃不胖阅读 4,338评论 0 3
  • python包含数据结构包含list列表、tuple元组、dict字典、set集合这些都是内置类型。collect...
    _String_阅读 4,145评论 0 0
  • 一、总结,本次作业,真的收获很多,1、windows 平台,暴露了很多问题,首先是路径问题,而后安装几个库,也是,...
    木马音响积木阅读 1,058评论 0 0

友情链接更多精彩内容