• 并发编程 之 IPC机制


    IPC机制:进程间通信,有两种实现方式:

    一种:pipe:管道

    二种:pipe(管道)+锁(队列)

    实现通信兼进程   用队列

    from multiprocessing import Queue   
    #
    Queue  队列

    q=Queue(3) #queue占得是内存空间,队列 是 先进先出,括号里的3,代表队列大小为3个,只能放3个。

    注意:
    1,队列占用的是内存空间
    2,不应该往列队中放大数据,应该只存放数据量较小的消息。

    from multiprocessing import Queue
    q=Queue(3)
    q.put('first')
    q.put({'k':'second'})
    q.put(['third',])
    # q.put(4) #放第四个的时候,需要等前面有人释放锁后才能放进去
    print(q.get())
    print(q.get())
    print(q.get())
    print(q.get()) #第四次的时候,会一直等待着有人释放,才能拿到,不然程序不结束。








    #了解的
    # q=Queue(3) #先进先出
    # q.put('first',block=True,timeout=3)
    # q.put({'k':'sencond'},block=True,timeout=3)
    # q.put(['third',],block=True,timeout=3)
    # print('===>')
    # # q.put(4,block=True,timeout=3)
    #
    #
    # print(q.get(block=True,timeout=3))
    # print(q.get(block=True,timeout=3))
    # print(q.get(block=True,timeout=3))
    # print(q.get(block=True,timeout=3))

    注意:当block=True 时,才有阻塞,才有 timeout=3,(超时间等待的概念)
    当block=false时,说明无阻塞,加timeout(等待时间)无意义。当队列满了,直接抛出异常,不会阻塞
    # q=Queue(3) #先进先出
    # q.put('first',block=False,)
    # q.put({'k':'sencond'},block=False,)
    # q.put(['third',],block=False,)
    # print('===>')
    # # q.put(4,block=False,) # 队列满了直接抛出异常,不会阻塞
    #
    # print(q.get(block=False))
    # print(q.get(block=False))
    # print(q.get(block=False))
    # print('get over')
    # print(q.get(block=False))
    #
  • 相关阅读:
    Linux性能评测工具之一:gprof篇
    几个源码下载的网站
    linux svn代码回滚命令
    这就是阶层——你根本不知道世界有多残酷
    shell脚本中的数据传递方式
    XGBoost参数调优完全指南(附Python代码)
    机器学习(一) ---- 最优化理论基础
    Docker构建Java web应用服务
    使用Dockerfile创建支持SSH服务的镜像
    使用commit方式构建具有sshd服务的centos镜像
  • 原文地址:https://www.cnblogs.com/fxc-520520/p/9301402.html
Copyright © 2020-2023  润新知