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()

浙公网安备 33010602011771号