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

原文地址:https://www.cnblogs.com/jianhaozhou/p/9584894.html