博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

进程间简单通信

Posted on 2018-05-17 22:26  alex_hrg  阅读(196)  评论(0编辑  收藏  举报

方法一,进程Queue

import multiprocessing,time,os
import threading

# print("主进程的父PID:",os.getppid())  #即pytharm进程ID
# print("主进程的PID:",os.getpid())

def sub(q):
    print("sub process")
    print("子进程的父PID:", os.getppid())
    print("子进程的PID:", os.getpid())
    q.put("aaa")
q = multiprocessing.Queue()
if __name__ == '__main__':
    t = multiprocessing.Process(target=sub,args=(q,))
    t.start()
    print(q.get())
  t.join()等待进程返回

  

方法二,进程pipe

import multiprocessing,time,os
import threading

def sub(q):
    print("sub process")
    print("子进程的父PID:", os.getppid())
    print("子进程的PID:", os.getpid())
    q.send("aaa")
    q.send("bbb")
if __name__ == '__main__':
    pare_conn,chil_conn = multiprocessing.Pipe()
    t = multiprocessing.Process(target=sub,args=(chil_conn,))
    t.start()
    print(pare_conn.recv(),pare_conn.recv())  #跟socket通信一样,如果多recv没有数据会一直卡着直到有数据发来

  。。。