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()
  • 相关阅读:
    加分二叉树
    香甜的黄油 Sweet Butter
    09.22今日暂时停更题解
    能量项链
    转圈游戏
    字串变换
    关押罪犯
    选择客栈
    神经网络
    未整理算法的总结
  • 原文地址:https://www.cnblogs.com/wakey/p/13259102.html
Copyright © 2011-2022 走看看