并发编程

概念:

    并发:程序看上去是在同时运行

    串行:一个程序完完整整的运行完毕,才能运行下一个程序


作用:

    cpu在执行程序,遇到io时,不干活,就可以使用并发

多道技术:

     - 空间上的复用(多个程序共一套硬件设备,它是多道技术实现时间上的复用的基础,
         不然还要去硬盘读数据)
        
     - 时间上的复用(单个cpu的电脑上,起多个应用程序。cpu快速切换,给人的感觉是同时运行)
    
     cpu两种情况下才会切换:(先保存当前程序的运行状态)
         - 一个任务占用cpu时间过长或被操作系统强行剥夺走cpu的执行权限(比起串行效率反而降低)
         - 一个任务执行过程中遇到io操作,也会被操作系统强行剥夺走cpu的执行权限(比起串行效率提高)
        

用法:


示例:

# TCP socketserver使用
import socketserver
class MyTcpServer(socketserver.BaseRequestHandler):
    def handle(self):
        while True:
            try:
                data = self.request.recv(1024)  # 对于tcp,self.request相当于conn对象
                if len(data) == 0:break
                print(data)
                self.request.send(data.upper())
            except ConnectionResetError:
                break
if __name__ == '__main__':
    server = socketserver.ThreadingTCPServer(('127.0.0.1',8081),MyTcpServer)
    server.serve_forever()

# UDP socketserver使用
import socketserver


class MyUdpServer(socketserver.BaseRequestHandler):
    def handle(self):
        while True:
            data, sock = self.request
            print(data)
            sock.sendto(data.upper(), self.client_address)


if __name__ == '__main__':
    server = socketserver.ThreadingUDPServer(('127.0.0.1', 8080), MyUdpServer)
    server.serve_forever()



posted @ 2019-05-05 21:19  代码创造一切  阅读(131)  评论(0编辑  收藏  举报