进程间的通信

Posted wang14339

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程间的通信相关的知识,希望对你有一定的参考价值。

进程间的通信方式有 管道,消息队列 ,共享内存,信号(不太会),套接字(用于web)

管道方式:一个放入一个取出

def ps(c,msg):
    print("child start")
    c.send("hello"+str(msg))
    print(os.getpid())
if __name__=="__main__":
    c,pa=Pipe()
    li=[]
    for i in range(5):
        p=Process(target=ps,args=(c,""))
        li.append(p)
        p.start()
    for i in range(5):
        data=pa.recv()
        print(data)
    for i in range(5):
        p.join()

消息队列:先放入消息再取出消息

def ps(c,msg):
    c.put("hello"+str(msg))
if __name__=="__main__":
    q=Queue()
    l=[]
    for i in range(5):
        p=Process(target=ps,args=(q,"_--"))
        l.append(p)
        p.start()
    for i in l:
        i.join()
    while not q.empty():
        print(q.get())

共享内存:

def ps(msg):
    for i in range(5):
        if msg.value==100:
            msg.value=0
        else:
            msg.value=100
        print(msg.value)
        sleep(1)
if __name__=="__main__":
    msg=Value("i",100)
    p1=Process(target=one,args=(msg,))
    p2=Process(target=one,args=(msg,))
    p1.start()
    p2.start()
    p1.join()
    p2.join()

 

以上是关于进程间的通信的主要内容,如果未能解决你的问题,请参考以下文章

请教一个Linux下C语言的进程间的信号问题

python全栈开发day32-进程创建,进程同步,进程间的通信,进程池

VC++ 进程间的通信

python全栈开发,Day40(进程间通信(队列和管道),进程间的数据共享Manager,进程池Pool)

进程间的通信-队列/管道以及进程间的数据共享和进程池

进程间的通信