• 队列


    ipc机制 进程通讯

    管道: pipe 基于共享的内存空间

    队列: pipe+锁 queue

    ###案例一
    from multiprocessing import Process,Queue
    q = Queue()
    q.put('aaa')
    q.put([1,2,4])
    q.put(2)
    print(q.get())
    print(q.get())
    print(q.get())
    # q.put(5)
    # q.put(5)
    print(q.get()) # 默认就会一直等着拿值
    
    
    ###案例二
    from multiprocessing import Process,Queue
    q = Queue(4)
    q.put('aaa')
    q.put([1,2,4])
    q.put([1,2,4])
    q.put(2)
    
    q.put('乔碧萝')  #队列满了的情况再放值,会阻塞
    
    
    ###案例三
    from multiprocessing import Process,Queue
    q = Queue(3)
    q.put('zhao',block=True,timeout=2) #
    q.put('zhao',block=True,timeout=2) #
    q.put('zhao',block=True,timeout=2) #
    
    q.put('zhao',block=True,timeout=5) # put里的  block=True 如果满了会等待,timeout最多等待n s,如果ns还是队列还是满的就报错了
    
    
    ###案例四
    from multiprocessing import Process,Queue
    q = Queue()
    q.put('yyyy')
    q.get()
    q.get(block=True,timeout=5) # block=True 阻塞等待,timeout最多等5s, 剩下同上
    
    
    ###案例五
    from multiprocessing import Process,Queue
    q = Queue(3)
    q.put('qwe')
    q.put('qwe')
    q.put('qwe')
    
    q.put('qwe',block=False) # 对于put来说block=False 如果队列满了就直接报错
    
    q = Queue(3)
    q.put('qwe')
    q.get()
    
    
    q.get(block=False)
    #block = Flase 拿不到不阻塞,直接报错
    
    ###案例六
    from multiprocessing import Process,Queue
    q = Queue(1)
    q.put('123')
    # q.get()
    q.put_nowait('666') # block = False
    # q.get_nowait() # block = False
    
    
    
  • 相关阅读:
    显示屏分辨率自动调整例子
    该内存不能read 或written数值 叙述
    DELPHI之关于String的内存分配(引)
    Delphi关于记录文件的操作转
    用句柄操作下拉框
    SendMessage参数
    c#通过SendMessage发送消息
    Delphi内存专题 (引)
    Delphi7 中使用ODAC存取图片
    打印机状态测试
  • 原文地址:https://www.cnblogs.com/aden668/p/11528002.html
Copyright © 2020-2023  润新知