1.基于udp协议的套接字—支持开发
服务端
import socketserver class MyRequestHanlder(socketserver.BaseRequestHandler): def handle(self): data,server = self.request server.sendto(data.upper(),self.client_address) server = socketserver.ThreadingUDPServer(('127.0.0.1',9999),MyRequestHanlder) server.serve_forever() 客户端
from socket import * client = socket(AF_INET,SOCK_DGRAM) while True: msg = input(">>>: ").strip() client.sendto(msg.encode('utf-8'),('127.0.0.1',9999)) res,server_addr = client.recvfrom(1024) print(res.decode('utf-8'))
开放相关概念
进程:进程指的就是程序的运行过程,是一个动态的概念
程序:程序就是一系列的代码文件,是一个静态的概念
进程也可以说成是操作系统干活的过程,
一个进程说白了就是操作系统控制硬件来运行应用程序的过程
所以说进程是操作系统最核心的概念,没有之一,研究进程就是在研究操作系统
多道技术:
1、空间上的复用
2、时间上的复用
cpu在多个进程/任务之间快速切换
1、遇到io切
2、占用时间过长也切
批处理操作系统:一批程序是一个运行完毕,再运行下一个,即串行
分时操作操作系统
MULTICS
unix
minix
linux
开启进程的两种方式
from multiprocessing import Process import os import time def task(n): print("父进程:%s 自己:%s 正在运行" %(os.getppid(),os.getpid())) time.sleep(n) print("父进程:%s 自己:%s 运行完毕" %(os.getppid(),os.getpid())) if __name__ == '__main__': p = Process(target=task,args=(3,)) p.start() # 通知操作系统开启进程 print("主",os.getpid())
from multiprocessing import Process import os import time class Myprocess(Process): def __init__(self,n): super().__init__() self.n = n def run(self) -> None: print("父进程:%s 自己:%s 正在运行" % (os.getppid(), os.getpid())) time.sleep(self.n) print("父进程:%s 自己:%s 运行完毕" % (os.getppid(), os.getpid())) if __name__ == '__main__': p = Myprocess(3) p.start() print('主',os.getpid())
进程间内存空间是隔离的
from multiprocessing import Process import os import time count = 100 def task(): global count count = 0 if __name__ == '__main__': p = Process(target=task) p.start() # 通知操作系统开启进程 time.sleep(5) print("主",count) 进程对此昂相关方法
# # from multiprocessing import Process # import os # import time # # count = 100 # # def task(): # global count # count = 0 # # if __name__ == '__main__': # p = Process(target=task) # p.start() # 通知操作系统开启进程 # p.join() # print("主",count) # # 例2 # # from multiprocessing import Process # import os # import time # # def task(n): # print(os.getpid()) # time.sleep(n) # # if __name__ == '__main__': # p1 = Process(target=task,args=(3,)) # p2 = Process(target=task,args=(2,)) # p3 = Process(target=task,args=(1,)) # # start = time.time() # p1.start() # 通知操作系统开启进程 # p1.join() # # p2.start() # 通知操作系统开启进程 # p2.join() # # p3.start() # 通知操作系统开启进程 # p3.join() # # stop = time.time() # print(stop - start) # # 例3 from multiprocessing import Process import os import time def task(n): print(os.getpid()) time.sleep(n) if __name__ == '__main__': p1 = Process(target=task, args=(3,),name='进程1') p1.start() print(p1.name,p1.pid) # p1.join() p1.terminate() time.sleep(0.01) print(p1.is_alive())
j
j