每日作业 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()