基于TCP协议通信(并发)
import socketserver class MyTCPhandler(socketserver.BaseRequestHandler): def handle(self): while True: try: data = self.request.recv(1024) if len(data) == 0: break print(data) self.request.send(data.upper()) except ConnectionResetError: break self.request.close() if __name__ == '__main__': server = socketserver.ThreadingTCPServer(('127.0.0.1', 8081), MyTCPhandler) server.serve_forever()
from socket import * client = socket(AF_INET, SOCK_STREAM) client.connect(('127.0.0.1', 8081)) while True: client.send('hello'.encode('utf-8')) data = client.recv(1024) print(data) client.close()
基于UDP协议通信(并发)
import socketserver class MyUDPhandelr(socketserver.BaseRequestHandler): def handle(self): data, sock = self.request print(data) sock.sendto(data.upper(), self.client_address) if __name__ == '__main__': server = socketserver.ThreadingUDPServer(('127.0.0.1', 8081), MyUDPhandelr) server.serve_forever()
from socket import * client = socket(AF_INET, SOCK_DGRAM) while True: client.sendto(b'hello', ('127.0.0.1', 8081)) data, server_addr = client.recvfrom(1024) print(data)
什么是进程
进程指的是一个正在进行/运行的程序,进程是用来描述程序执行过程的虚拟概念
进程vs程序
程序:一堆代码
进程:程序的执行的过程
进程的概念起源于操作系统,进程是操作系统最核心的概念,操作系统其它所有的概念都是围绕进程来的
操作系统理论:
1、操作系统是什么
操作系统是一个协调、管理、控制计算机硬件资源与应用软件资源的一段控制程序
有两大功能:
1、将复杂的硬件操作封装成简单的接口给应用程序或者用户去使用
2、将多个进程对硬件的竞争变得有序
操作系统的发展史
并发:多个任务看起来是同时运行的
串行:一个任务完完整整地运行完毕,才能运行下一个任务
多道技术:(复用=》共享/共用)
1.空间上的复用:多个任务复用内存空间
2.时间上的复用:多个任务复用cpu的时间
1.一个任务占用cpu时间过长会被操作系统强行剥夺走cpu的执行权限:比起串行执行反而会降低效率
2.一个任务遇到io操作也会被操作系统强行剥夺走cpu的执行权限:比起串行执行可以提升效率