zoukankan      html  css  js  c++  java
  • 每日作业 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()
  • 相关阅读:
    java基础知识复习
    红黑二叉查找树(原理、实现)
    Django admin
    redis+sentinel 安装与配置
    浅谈saltstack
    python3 通过smtplib模块发送邮件
    django 自定义分页模块
    chouti项目
    Django 进阶篇二
    Django 进阶篇
  • 原文地址:https://www.cnblogs.com/baicai37/p/12762947.html
Copyright © 2011-2022 走看看