进程之间通信(IPC)

进程之间通信(IPC)

  • 进程之间是数据隔离的

  • 进程之间通信的方式

    • 基于文件:适用于同一台机器上的多个进程之间通信

      • Pipe 管道 不加Lock锁,所以数据不安全

      • Queue 队列(先进先出)队列是基于socket\pikel\Lock实现的,数据是安全的,不需要加锁

        • 基于socket的文件级别的通信来完成数据传递的

        • from multiprocessing import Queue
          from multiprocessing import Process
          
          
          def pro(q):
              for i in range(5):
                  print(q.get()) #取出Queue中的数据
          
          def son(q):
              for i in range(10):
                  q.put(f'hello{i}')  #将hello放入Queue队列当中
          
          if __name__ == '__main__':
              q=Queue()
              ret=Process(target=son,args=(q,)).start()
              ret1=Process(target=pro,args=(q,)).start()
              # print(q.get()) #取出Queue中的数据
          
    • 基于网络:适用于同一台机器或着多台机器上的多进程通信

      • 第三方工具(消息中间件)
        • memcache
        • redis
        • rabbitmq
        • kafka
posted @ 2021-06-21 23:38  刘家小仙女  阅读(62)  评论(0编辑  收藏  举报