from multiprocessing import Queue
# put:向队列中添加元素,如果数量超出队列长度,那么程序阻塞,等待get方法执行
# get:从队列中获取元素,如果获取的数量超出队列长度,那么程序阻塞,等待put方法执行
# put_nowait:向队列中添加元素,如果数量超出队列长度,程序报错 queue.Full
# get_nowait:从队列中获取元素,如果获取的数量超出队列长度,程序报错 _queue.Empty
q = Queue(5)
q.put_nowait("鱼香肉丝")
q.put_nowait("蛋炒面")
q.put_nowait("蛋炒饭")
q.put_nowait("西红柿鸡蛋")
q.put_nowait("馒头")
# q.put_nowait("饺子")
print(q.get_nowait())
print(q.get_nowait())
print(q.get_nowait())
print(q.get_nowait())
print(q.get_nowait())
print(q.get_nowait())
print("放置结束")
# q.put("鱼香肉丝")
# q.put("蛋炒面")
# q.put("蛋炒饭")
# q.put("西红柿鸡蛋")
# q.put("馒头")
#
# q.get("蛋炒面")
#
# # 当队列中的数据占满,再往队列中放置信息,程序阻塞等待
# q.put("饺子")
# q.put("鱼香肉丝")
# q.put("蛋炒面")
# q.put("蛋炒饭")
# q.put("西红柿鸡蛋")
# q.put("馒头")
#
# print(q.get())
# print(q.get())
# print(q.get())
# print(q.get())
# print(q.get())
#
#
# print(q.get())
#
# print("放置结束")
生产者与消费者
from multiprocessing import Process, Queue, Lock
import time
def producer(q, l, food):
while 1:
# 生产者
l.acquire()
item = "厨师在后厨制作了%s" % food
q.put(item)
print(item)
time.sleep(1)
l.release()
def consumer(q, l, name):
while 1:
l.acquire()
item = q.get()
print("%s 从吧台拿走了 %s" % (name, item))
time.sleep(1)
l.release()
if __name__ == '__main__':
q = Queue(2)
l = Lock();
p1 = Process(target=producer, args=(q, l, "蛋炒面"))
p2 = Process(target=producer, args=(q, l, "红色的棉花糖"))
p3 = Process(target=consumer, args=(q, l, "吃货路飞"))
p4 = Process(target=consumer, args=(q, l, "吃货船医乔巴"))
p1.start()
p2.start()
p3.start()
p4.start()
多进程的数据共享
from multiprocessing import Manager, Process
def ff(num):
num[0] = 78
if __name__ == '__main__':
m = Manager()
num = m.list([1, 2, 3, 4, 5, 6])
p = Process(target=ff, args=(num,))
p.start()
p.join()
print(num)