zoukankan      html  css  js  c++  java
  • 线程与进程 queue模块

    queue模块的基本用法

    https://www.cnblogs.com/chengd/articles/7778506.html

    模块实现了3种类型的队列,区别在于队列中条目检索的顺序不同。在FIFO队列中,按照先进先出的顺序检索条目。在LIFO队列中,最后添加的条目最先检索到(操作类似一个栈)。在优先级队列中,条目被保存为有序的(使用heapq模块)并且最小值的条目被最先检索。

    文档地址: https://docs.python.org/3/library/asyncio-queue.html

    谈谈python里面关于任务队列  

     https://www.cnblogs.com/yubenliu/p/8124191.html

    • 为什么要做任务队列

    要回答这个问题我们首先看看在流水线上的案列,如果人的速度很慢,机器的速度比人的速度快很多,就会造成,机器生产的东西没有及时处理,越积越多,造成阻塞,影响生产。

    • 任务队列的意义:

    打个比方如果出现人的速度跟不上机器速度怎么办,这个时候我们就需要第三方,监管人员(任务队列)把机器生产的东西,放在一个地方,(队列),然后分配给每个用户,有条不理的执行。

    18.5.8.1. Queue  先进先出

    import queue
    q=queue.Queue()
    q.empty()
    Out[123]: True
    #指定队列大小
    q=queue.Queue(1)
    q.put('a')
    q.full()
    Out[127]: True
    q
    Out[128]: <queue.Queue at 0x1adf0e2ef98>
    dir(q)
    Out[129]: 
    ['all_tasks_done',
     'empty',
     'full',
     'get',
     'get_nowait',
     'join',
     'maxsize',
     'mutex',
     'not_empty',
     'not_full',
     'put',
     'put_nowait',
     'qsize',
     'queue',
     'task_done',
     'unfinished_tasks']
    q.get()
    Out[130]: 'a'
    q.put('b')
    q.get()
    Out[132]: 'b'
    q.qsize()
    Out[133]: 0
    import queue
    q=queue.Queue()
    q.put('a')
    q.put('b')
    q.qsize()
    Out[6]: 2
    #put(放一个元素进队列) get(从队列中取出一个元素) 先进先出原则
    q.get()
    Out[8]: 'a'
    #get_nowait(立即取出一个元素,不等待)
    #占位
    #put_nowait(立即放入一个元素,不等待)
    #占位
    #join(阻塞调用线程,直到队列中的所有任务被处理掉)
    #占位
    #task_done(在完成一项任务之后,向任务已经完成的队列发送一个信号)
    #占位

    18.5.8.2. PriorityQueue  

    按照优先级出  参考上面博客例子

    18.5.8.3. LifoQueue  

    后进先出

  • 相关阅读:
    having——至少被订购过两回的订单
    产品——仓库表查询
    SQL 聚集函数使用
    select count(*)和select count(1)的区别 (转)
    SpringAOP 通知(advice)
    Spring AOP 实现原理与 CGLIB 应用
    cglib 动态代理基础篇
    模仿Struts2的Interceptor拦截器实现
    利用JDK动态代理机制实现简单拦截器
    java多线程总结二:后台线程(守护线程)
  • 原文地址:https://www.cnblogs.com/bawu/p/8609408.html
Copyright © 2011-2022 走看看