0

ノンブロッキング ソケットからデータを受信するための最適なスリープ値を探しています。例えば:

while True:
    data=s.recv(1024)
    if not data:
        time.sleep(10) #10ms
    else:
        pass #...

スリープしないと CPU 使用率が 100% になるため、CPU 使用率と帯域幅を最適化する方法はありますか? CPU がスレッド切り替えを実行できるようにするには、どのくらいスリープ状態にする必要がありますか?

ところで、SO_SNDBUF/SO_RECVBUF を介してソケットのバッファを設定し、TCP_NODELAY を設定することは理にかなっていますか、それともそれらを組み合わせるべきではありませんか?

4

3 に答える 3

3

を使用する予定がある場合sleep()は、ブロッキング ソケットを使用してみませんか?

于 2011-09-13T09:12:44.583 に答える
1

を使用しselectます。基本的に、プログラムを一時停止し、ソケットに利用可能なデータがあるときに起動します。

于 2011-09-13T09:11:56.707 に答える