python 进程间通信

队列Queue模块

管道:subprocess 

stdin stdout stderr

队列:先进先出 自动带锁(暂时未理解)

堆栈:先进后出

队列在多进程的时候不精准

from multiprocessing import Queue
q = Queue(3)

q.put(1111)
q.put(2222)
q.full()
q.put(3333)
# q.put(4444)  # 只能放3个数据,放了4个数据也会阻塞


q1 = q.get()
q2 = q.get()
q3 = q.get()
q.empty()
# q4 = q.get()   # 没有数据就会阻塞,等在那里取数据
# q5 = q.get()
print(q1,q2,q3,)
try:
    q4 = q.get()
    print(q4)
except Exception as e:
    print("no data")

 借助队列实现进程与进程之间的通信

一、主进程同子进程之间的通信

from multiprocessing import Process, Queue
def producer(q):
q.put("hello world")

if __name__ == "__main__":
q = Queue()
p = Process(target=producer, args=(q,))
p.start()
print(q.get())
二、子进程与子进程之间的通信
from multiprocessing import Process, Queue

def producer(q):
q.put("hello world")

def customer(q):

print(q.get())

if __name__ == "__main__":
q = Queue()
p1 = Process(target=producer, args=(q,))
p2 = Process(target=customer, args=(q,))
p1.start()
p2.start()

 

posted @ 2022-11-15 16:37  禾火123  阅读(82)  评论(0)    收藏  举报