0

クライアント ソケットからの TCP リクエストを処理するために TCPHandler を使用していますが、次のようなスニペット コードである multiThreading を使用しているときにパフォーマンスの問題が発生しました。

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 の場合は、標準ライブラリのasyncoreおよびasynchatモジュールを参照することをお勧めします。またはねじれたフレームワーク。イベント ドリブン アーキテクチャは現在のものとはまったく異なるため、おそらく書き直しが必要になることに注意してください。

于 2015-09-06T17:10:55.390 に答える