如何使 TCPServer 多处理

How to make TCPServer multiprocessing

我正在使用TCPHandler来处理客户端套接字的TCP请求,但是在使用多线程时遇到了性能问题,代码片段如下:

class TCPHandler(SocketServer.StreamRequestHandler):
    def handle(self):
        .............
class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
    pass
if __name__=="__main__":
    server = ThreadedTCPServer((host, port), TCPHandler)
        server.serve_forever()

上面的代码是multipleThreading,如何转换成multipleProcessing。

SocketServer.ThreadingMixIn 替换为 SocketServer.ForkingMixIn 以使您当前的代码产生一个进程来处理请求。请注意,这可能不是很有效,因为启动进程需要时间和资源。如果处理请求所需的时间比启动新进程所需的时间短,则可能会使事情变慢。

根据您的工作,事件驱动架构可能更合适。对于 Python 2,您可能需要查看 asyncore and asynchat modules from the standard library. Or the twisted 框架。请注意,事件驱动架构与您现在拥有的完全不同,可能需要重写。