zoukankan      html  css  js  c++  java
  • 13.2、进程的通信:Queue、Pipe、


    内容相关:

    概念:进程的通信

    Queue:创建与使用

    Pipe:创建与使用


    进程通信的概念

    • 进程的资源空间是相互独立的,一般而言是不能相互访问的。但很多情况下进程间需要互相通信,来完成系统的某项功能。进程通过与内核及其它进程之间的互相通信来协调它们的行为。
    • 通信方法:
      • 数据传输:一个进程将它的数据发送给另一个进程【如socket一般,把需要通信的数据传输给对方】
      • 管道:使用一片独立的区域【不在双方的资源空间中】,像一个有两个口的仓库一样,厂家负责在东门把产品放到仓库,司机负责在西门拉走产品
      • 资源共享:约定一片区域,双方都可以随意取放
      • 消息队列:这也是一个独立的区域,足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息

    Queue:

    • 可以使用队列multiprocessing.Queue来进行进程通信

    Queue 在multiprocessing 模块中:from multiprocessing import Queue

    • Queue的使用:
      • 1.创建对象:Queue对象=Queue()
      • 2.传入对象:要在主进程外使用Queue对象,需要作为参数传入image
      • 3.操作对象:【获取元素:Queue对象.get()】、【放入元素:Queue对象.put(元素)】
    #Queue在multiprocessing中
    from multiprocessing import  Queue,Process
    
    def f(q):#要在主进程外使用,需要作为参数传入
        q.put(['helloworld'])
        
    
    def m(q):
        print("get in p2:",q.get())
    
    if __name__=="__main__":
        q=Queue()
        p=Process(target=f,args=(q,))
        p.start()
        p2=Process(target=m,args=(q,))
        p2.start()


    Pipe:

    • 可以使用管道Pipe来进行进程通信

    Pipe 在multiprocessing 模块中:from multiprocessing import Pipe

    • Pipe的使用:
      • 1.创建对象:第一个Pipe对象,第二个Pipe对象=Pipe(),返回两个对象,第一个对象只能发,第二个对象只能收
      • 2.传入对象:在要发送的进程,传入第一个Pipe对象;在要接收的进程,传入第二个Pipe对象image
      • 3.操作对象:【获取元素:第一个对象.recv()】、【放入元素:第二个对象.send(元素)】
      • 4.操作完成后关闭管道:第一个对象.close(),第一个对象.close()
    from multiprocessing import Pipe,Process
    
    def f(conn):
        a=[1,2,3,4]
        conn.send(a)
        conn.close()
    def m(conn):
        a=conn.recv()
        conn.close()
    
    
    if __name__=="__main__":
        parent_conn,child_conn=Pipe()#返回两个值,第一个只能发,第二个只能收
        p1=Process(target=f,args=(child_conn,))
        p2 = Process(target=m, args=(parent_conn,))#
        p1.start()
        p2.start()
        p1.join()
        p2.join()


  • 相关阅读:
    convert image to base64 and post to RESTful wcf
    在android webview实现截屏的手动tounchmove裁剪图片
    How to use jquery ajax and android request security RESTful WCF
    using swfUpload in asp.net mvc
    using HttpClient and sending json data to RESTful server in adroind
    ODP.NET数据访问
    android image watermark
    解决国内不能访问github的问题
    idapro权威指南第二版阅读笔记第九章 交叉引用和绘图功能
    idapro权威指南第二版阅读笔记第二章 逆向和反汇编工具
  • 原文地址:https://www.cnblogs.com/progor/p/8439320.html
Copyright © 2011-2022 走看看