• 作业28


    作业28

    手动书写生产者消费者代码

    from multiprocessing import Process, JoinableQueue
    import time
    import random
    
    
    def producer(name, food, q):
        for i in range(1, 11):
            time.sleep(random.randint(1, 2))
            q.put(f"{food} {i}号")
            print(f"{name}制造了{food} {i}号")
    
    
    def consummer(name, q):
        while 1:
            food = q.get()
            time.sleep(random.randint(1, 2))
            print(f"{name}吃了{food}")
            q.task_done()
    
    
    if __name__ == '__main__':
        q = JoinableQueue()
        p1 = Process(target=producer, args=("egon", "包子", q))
        p2 = Process(target=producer, args=("tank", "泔水", q))
        c1 = Process(target=consummer, args=("jason", q))
        c2 = Process(target=consummer, args=("yang", q))
        c1.daemon = True
        c2.daemon = True
        p1.start()
        p2.start()
        c1.start()
        c2.start()
        p1.join()
        p2.join()
        q.join()
    
    from multiprocessing import Process, Queue
    import time
    import random
    
    
    def producer(name, food, q):
        for i in range(1, 11):
            time.sleep(random.randint(1, 2))
            q.put(f"{food} {i}号")
            print(f"{name}制造了{food} {i}号")
    
    
    def consummer(name, q):
        while 1:
            food = q.get()
            if food is None:
                break
            time.sleep(random.randint(1, 2))
            print(f"{name}吃了{food}")
    
    
    if __name__ == '__main__':
        q = Queue()
        p1 = Process(target=producer, args=("egon", "包子", q))
        p2 = Process(target=producer, args=("tank", "泔水", q))
        c1 = Process(target=consummer, args=("jason", q))
        c2 = Process(target=consummer, args=("yang", q))
        p1.start()
        p2.start()
        c1.start()
        c2.start()
        p1.join()
        p2.join()
        q.put(None)
        q.put(None)
    

    思考:如何实现TCP服务端并发的效果

    1 socketserver.ThreadingTCPServer

    2 多进程

    3 多线程

  • 相关阅读:
    黑马day01 xml 的解析方式
    Vijos 1164 曹冲养猪(中国剩余定理)
    HDU 2577 How to Type (线性dp)
    Python中的文本(一)
    [LeetCode] Find Minimum in Rotated Sorted Array
    机器学习算法中怎样选取超參数:学习速率、正则项系数、minibatch size
    java网络基本类使用(一)
    java文档注释主要使用方法
    java数组或集合返回空的问题
    tornado web高级开发项目
  • 原文地址:https://www.cnblogs.com/achai222/p/12764340.html
Copyright © 2020-2023  润新知