zoukankan      html  css  js  c++  java
  • python 中的queue 与多进程--待继续

    一、先说说Queue(队列对象)

    Queue是python中的标准库,可以直接import 引用,之前学习的时候有听过著名的“先吃先拉”与“后吃先吐”,其实就是这里说的队列,队列的构造的时候可以定义它的容量,别吃撑了,吃多了,就会报错,构造的时候不写或者写个小于1的数则表示无限多

    import Queue

    q = Queue.Queue(10)

    向队列中放值(put)

    q.put(‘yang’)

    q.put(4)

    q.put([‘yan’,’xing’])

    在队列中取值get()

    默认的队列是先进先出的

    >>> q.get()  'yang'  >>> q.get()  4  >>> q.get()  ['yan', 'xing']  >>>

    当一个队列为空的时候如果再用get取则会堵塞,所以取队列的时候一般是用到

    get_nowait()方法,这种方法在向一个空队列取值的时候会抛一个Empty异常

    所以更常用的方法是先判断一个队列是否为空,如果不为空则取值

    队列中常用的方法

    Queue.qsize() 返回队列的大小   Queue.empty() 如果队列为空,返回True,反之False   Queue.full() 如果队列满了,返回True,反之False  Queue.get([block[, timeout]]) 获取队列,timeout等待时间   Queue.get_nowait() 相当Queue.get(False)  非阻塞 Queue.put(item) 写入队列,timeout等待时间   Queue.put_nowait(item) 相当Queue.put(item, False)

    二。 Python multiprocessing.Queue() 和 Queue有区别吗??

    答案1: 有区别。Queue.Queue是进程内非阻塞队列,multiprocess.Queue是跨进程通信队列。多进程前者是各自私有,后者是各子进程共有。

    答案2:

    1.)from Queue import Queue 这个是普通的队列模式,类似于普通列表,先进先出模式,get方法会阻塞请求,直到有数据get出来为止

    2.)from multiprocessing.Queue import Queue 这个是多进程并发的Queue队列,用于解决多进程间的通信问题。普通Queue实现不了。例如来跑多进程对一批IP列表进行运算,运算后的结果都存到Queue队列里面,这个就必须使用multiprocessing提供的Queue来实现

    作者:人间各种胸器 链接:https://www.zhihu.com/question/30459454/answer/104842081 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    关于Design Complier/Library Compiler的跌坑(坑爹)记录
    博客暂时停更
    简单的Verilog测试模板结构
    存储器的设计/建模
    静态时序分析的三种分析模式(简述)
    Linux系统的基本使用
    Modelsim的使用——复杂的仿真
    Python-第三方库requests
    MySQL查询结果写入到文件总结
    MySQL创建函数报“ERROR 1418 ”错误,不能创建函数
  • 原文地址:https://www.cnblogs.com/momo8238/p/7357754.html
Copyright © 2011-2022 走看看