学习日记0904并发编程socketserver模块 进程理论
基于tcp的并发编程
服务端
import socketserver class MyTCPLink(socketserver.BaseRequestHandler): def handle(self): while True: try: data = self.request.recv(1024) print(self.client_address, data) self.request.send(data.upper()) except Exception: break self.request.close() if __name__ == '__main__': server = socketserver.ThreadingTCPServer(('127.0.0.1', 8080), MyTCPLink) server.serve_forever()
客户端:
from socket import * phone = socket(AF_INET,SOCK_STREAM) phone.connect(('127.0.0.1',8080)) while True: msg = input('>>>>>:').strip() if not msg: continue phone.send(msg.encode('utf-8')) msg_recv = phone.recv(1024) print(msg_recv.decode('utf-8'))
基于udp并发编程
服务端:
import socketserver class MyUDPLink(socketserver.BaseRequestHandler): def handle(self): data, sock = self.request sock.sendto(data.upper(),self.client_address) if __name__ == '__main__': server = socketserver.ThreadingUDPServer(('127.0.0.1', 8080), MyUDPLink) server.serve_forever()
客户端:
from socket import * phone = socket(AF_INET,SOCK_DGRAM) while True: msg = input('>>>>:').strip() phone.sendto(msg.encode('utf-8'),('127.0.0.1',8080)) data,adr = phone.recvfrom(1024) print(data)
进程理论:
什么是进程:
进程是一个正在执行的程序
为何要实现进程:
实现并发
什么是操作系统:
操作系统是一个协调/管理/控制计算机硬件和应用的一段程序
两大功能:
1.将多个进程对硬件的竞争变得有序
2. 将复杂的硬件操作封装成简单的接口来供程序或者用户来使用
并发:多个任务看起来是同时进行的
串行:一个任务完整的执行完毕,再执行下一个任务
多道技术:
1.空间复用:多个任务复用内存空间
2.时间复用:多个任务复用cpu的时间
1.一个任务的执行时间过长操作系统会强行夺走cup的执行权限
2.一个任务在执行I/O操作时也会被操作系统强行夺走CPU的执行权限