0

我正在使用 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。

4

1 回答 1

1

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

根据您在做什么,事件驱动的架构可能更合适。对于 Python 2,您可能希望查看标准库中的asyncoreasynchat模块。或者扭曲的框架。请注意,事件驱动架构与您现在拥有的架构完全不同,可能需要重写。

于 2015-09-06T17:10:55.390 回答