day24 阶段总结
课程目标:对第三模块 阶段的知识点进行总结和考试,让学员更好的掌握此模块的相关知识。
课程概要:
- 知识补充
- 阶段总结(思维导图)
- 考试题
1. 知识点补充
我们来分析如下代码:
1 | import socket |
上述代码集成了:线程、网络编程、IO多路复用,实现了一个支持并发的服务端(可以同时接受多个客户端的连接)。
socketserver,是Python中的内置模块。该模块内部基于线程、进程 + socket + IO多路复用,帮我们实现了上述的功能(写的更加严谨)。
服务端
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19import socketserver
import threading
class MyRequestHandler(socketserver.BaseRequestHandler):
def handle(self):
conn = self.request
while True:
data = conn.recv(1024)
if not data:
break
print("收到消息:", data.decode('utf-8'), threading.current_thread())
conn.close()
obj = socketserver.ThreadingTCPServer(('127.0.0.1', 9000), MyRequestHandler)
obj.serve_forever()客户端
1
2
3
4
5
6
7
8
9
10
11
12import socket
client = socket.socket()
client.connect(('127.0.0.1', 9000))
while True:
content = input(">>>")
if content.upper() == 'Q':
break
client.sendall(content.encode('utf-8'))
client.close()
在很多的框架和模块中已集成了并发相关的内容,让程序员可以只关注业务功能的开发,避免重复造轮子了(Stop Trying to Reinvent the Wheel)。
2. 阶段总结
思维导图
3. 考试题
考试题的目的是让大家对自己近期知识点学习练习 以及 自测,请大家务必【独立】完成(切勿翻看笔记 & 切勿网上搜索 )。
第一步:自己独立完成(编程题目可以在pycharm中编写)
第二步:做完之后,翻看自己笔记去修改和更正。
第三步:觉自己做的没问题了,最后再去看考试题的参考答案和讲解。
详情见附件《第三阶段考试题.md》文件。