美文网首页
04 python 服务器模块SocketServer实现线程化

04 python 服务器模块SocketServer实现线程化

作者: _Mirage | 来源:发表于2020-07-17 08:01 被阅读0次

    鉴于分叉占用的资源比较多(每个分叉出来的进程都必须有自己的内存),我们可以使用线程化来解决这个问题。

    线程是轻量级进程(子线程),都位于同一个进程中并共享内存,这减少了占用的资源。但这也带来了一个缺点:由于线程共享内存,我们必须要确保它们不会比彼此干扰或同时修改同一项数据,否则会引起混乱。

    基于SocketServer的简易线程化服务器:

    from socketserver import TCPServer, ThreadingMixIn, StreamRequestHandler
    
    # 同分叉化服务器一样,我们自定义子类多继承自ThreadingMixIn和TCPServer
    class Server(ThreadingMixIn, TCPServer):
        pass
    
    class Handler(StreamRequestHandler):
        # 处理客户端请求的实例方法
        def handle(self):
            addr = self.request.getpeername()
            print('来自{}的连接请求..'.format(addr))
            self.wfile.write(bytes('谢谢你的连接...', 'utf-8'))
    
    
    # 使用自定义的服务器即可简便实现线程化(简便)
    # 服务器使用: 端口1234, IP为本机IP, 处理客户端请求的类: Handler
    server = Server(('', 1234), Handler)
    print('等待客户端连接中....')
    server.serve_forever()
    

    客户端: 同样可以使用socket实现简易客户端完成对话

    相关文章

      网友评论

          本文标题:04 python 服务器模块SocketServer实现线程化

          本文链接:https://www.haomeiwen.com/subject/sfewhktx.html