zoukankan      html  css  js  c++  java
  • python-Queue

    Queue队列作用

    • 解耦:使程序直接实现松耦合,修改一个函数,不会有串联关系。
    • 提高处理效率:FIFO = 现进先出,LIFO = 后入先出。

    Queue的使用

    import multiprocessing
    
    # 创建一个长度为3的队伍
    queue = multiprocessing.Queue(5)
    # 向队列中放值
    queue.put(1)
    queue.put("hehe")
    queue.put((1, 2, 3))
    queue.put([4, 5, 6])
    queue.put({"a": 1, "b": 2})
    
    # 队列长度为5,放入第6个数据后,队列就进入了阻塞状态,默认会等待队列取出值后再放入新的值
    # queue.put(100)
    
    # 当队列已经为空的时候,再次get(),程序进入阻塞状态,等待放入新的值到队列,然后再取
    # 队列中取值
    value = queue.get()
    print(value)
    print("....................")

    利用Queue,实现进程间的通信

    import multiprocessing
    import time
    
    
    # 写数据到队列
    def write_queue(queue):
        for i in range(10):
            # 判断队列是否已满
            if queue.full():
                print("队列已满")
                break
            queue.put(i)
            print("已写入:", i)
            time.sleep(0.5)
    
    
    # 从队列中读数据
    def read_queue(queue):
        while True:
            # 判断队列是否为空
            if queue.qsize() == 0:
                print("队列已空")
                break
            value = queue.get()
            print("已取值:", value)
    
    
    if __name__ == '__main__':
        # 创建一个空的队列
        queue = multiprocessing.Queue(5)
        # 创建两个进程,分别写数据、读数据
        w_process = multiprocessing.Process(target=write_queue, args=(queue,))
        r_process = multiprocessing.Process(target=read_queue, args=(queue,))
        w_process.start()
        # join() 优先让写数据的进程执行完,再执行读数据的进程
        w_process.join()
        r_process.start()
  • 相关阅读:
    使用阿里云服务器的总结二-----目录权限
    使用阿里云服务器的总结一----修改配置
    thinkphp框架开启页面gzip压缩
    内容页分页代码
    js禁止中文输入 最简洁的【禁止输入中文】
    JS中setTimeout()的用法详解
    面向对象的5条基本设计原则
    C#_面试题1
    问题 E: C语言11.8
    问题 D: C语言11.7
  • 原文地址:https://www.cnblogs.com/wakey/p/13259102.html
Copyright © 2011-2022 走看看