私はいくつかのソケットを同時に開くソケットクライアントを実装しています。どんなソケットにも異なる時刻にデータがある可能性があり、ソケットにデータがあり、読み込み可能なときにコードを実行したい。ソケットにデータがあるのを待つ方法は?
私はこれを実装する方法を、私はselect.selectを見ていたかわからないが、読みやすいように、すべてのソケットを待つように思われます。
私はそれが各ソケットからの読み込みで連続することが、利用可能なデータがあるときに読みたい、ソケット上のデータを処理するためのマルチプロセッシングを使用しないようにしたいと思います。
にはどうすれば読めるように任意のソケットのを待つのですか?
# psudo code
sockets = [sock1, sock2, sock3]
while True:
if len(sockets) == 0:
break
for sock in sockets:
if sock.has_data():
do_stuff(sock)
sockets.remove(sock)
sleep(0.1)
'SELECT'が読めるように、すべてのソケットを待たない、それが返されます。 –
何をしても、ブロックしたくない場合は、ソケットを非ブロックにすることを忘れないでください。あなたが使用するすべての機能は、将来を予測するために使用することができないステータスレポート機能になります。ブロッキングread *は、 'select 'が何であってもブロックすることができます。 –