• 每日作业 4/23


    # 今日作业

    整理今日内容到博客

    描述知识点一定要用自己的话术概括,不要死记硬背!!!

    把知识点理解了,再去用自己语言组织说出来即可

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

    from multiprocessing import Process,JoinableQueue
    import time,random,os
    def consumer(q):
        while True:
            res=q.get()
            time.sleep(random.randint(1,3))
            print('%s 吃 %s' %(os.getpid(),res))
            q.task_done()  
    
    def producer(name,q):
        for i in range(1,4):
            time.sleep(random.randint(1,3))
            res='%s%s' %(name,i)
            q.put(res)
            print('%s 生产了 %s' %(os.getpid(),res))
    
    
    if __name__ == '__main__':
        q=JoinableQueue()
        p1=Process(target=producer,args=("包子",q,))
        p2=Process(target=producer,args=("骨头",q,))
    
        c1=Process(target=consumer,args=(q,))
        c2=Process(target=consumer,args=(q,))
    
        #开始
        p1.start()
        p2.start()
        p1.join()
        p2.join()
    
        c1.daemon=True   #设置守护进程
        c2.daemon=True
        c1.start()
        c2.start()
    
        q.join()
        print('')
    
    """
    执行结果:
    16120 生产了 包子1
    6380 生产了 骨头1
    16120 生产了 包子2
    6380 生产了 骨头2
    16120 生产了 包子3
    6380 生产了 骨头3
    9264 吃 包子1
    1852 吃 骨头1
    9264 吃 包子2
    1852 吃 骨头2
    9264 吃 包子3
    1852 吃 骨头3
    主
    """

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

    可以将通信循环放到函数中,通过Process创建进程

    import socket
    from multiprocessing import Process
    
    phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
    phone.bind(("127.0.0.1",9000))
    phone.listen(5)
    
    def connect_server(conn,addr_port):
        while True:
            try:
                data=conn.recv(1024)
                if not data:break
                conn.send(data.upper())
            except Exception:
                break
    
    if __name__ == '__main__':
        while True:
            conn,addr_port=phone.accept()
            p=Process(target=connect_server,args=(conn,addr_port,))
            p.start()
  • 相关阅读:
    3.22-3.29课题(拼团系统)进度汇报
    结对编程二--单元测试
    个人作业2——英语学习APP案例分析
    第三周进度报告(拼团系统项目)
    结对编程1
    启动Tomcat提示:指定的服务未安装
    (C#)DataTable导出Excel
    支持向量机通俗导论(理解SVM的三层境界)
    LIBSVM在Matlab下的使用
    dev中 使用一些控件后,窗体屏蔽右键某些菜单
  • 原文地址:https://www.cnblogs.com/baicai37/p/12762947.html
Copyright © 2020-2023  润新知