• 学习日记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的执行权限

  • 相关阅读:
    WinRT下GridView/ListView随滚动条自动加载
    C# 获取属性名
    Xaml System Resources 系统资源
    WinRT常见而又困扰的问题
    .net 解压 zip 包完全不用第三方 library (.net unzip zip file without third party library)
    团队.Net技术手册,现代.Net技术栈摸索梳理
    C# 构建可扩展的应用程序(插件)
    分别用MVC,MCP,MVVM实现一个井字棋游戏
    Android系统属性
    ThreadLocal 和 Countdaowlatch
  • 原文地址:https://www.cnblogs.com/jianhaozhou/p/9584894.html
Copyright © 2020-2023  润新知