多进程队列
from multiprocessing import Queue# put:向队列中添加元素,如果数量超出队列长度,那么程序阻塞,等待get方法执行
# get:从队列中获取元素,如果获取的数量超出队列长度,那么程序阻塞,等待put方法执行# put_nowait:向队列中添加元素,如果数量超出队列长度,程序报错 queue.Full
# get_nowait:从队列中获取元素,如果获取的数量超出队列长度,程序报错 _queue.Emptyq = 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 timedef producer(q, l, food):while 1:# 生产者l.acquire()item = "厨师在后厨制作了%s" % foodq.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, Processdef ff(num):num[0] = 78if __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)