多进程队列


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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值