15.1 select -- I/O 処理の完了を待機する

このモジュールでは、ほとんどのオペレーティングシステムで利用可能な select() および poll() 関数へのアクセス 機構を提供します。Windows の上ではソケットに対してしか動作しないので 注意してください; その他のオペレーティングシステムでは、他のファイル 形式でも (特に Unixではパイプにも) 動作します。通常のファイルに 対して適用し、最後にファイルを読み出した時から内容が増えているかを 決定するために使うことはできません。

このモジュールでは以下の内容を定義しています:

exception error
エラーが発生したときに送出される例外です。エラーに付属する 値は、 errno からとったエラーコードを表す数値とその エラーコードに対応する文字列からなるペアで、C 関数の perror() が出力するものと同様です。

poll( )
(全てのオペレーティングシステムでサポートされているわけでは ありません。) ポーリングオブジェクトを返します。このオブジェクトは ファイル記述子を登録したり登録解除したりすることができ、 ファイル記述子に対する I/O イベント発生をポーリングすることが できます; ポーリングオブジェクトが提供しているメソッドについては 下記の 15.1.1 節を参照してください。

select( iwtd, owtd, ewtd[, timeout])
Unixselect() システムコールに対する直接的な インタフェースです。最初の 3 つの引数は `待機可能なオブジェクト' からなるシーケンスです: ファイル記述子を表す整数値、または 引数を持たず、整数を返すメソッド fileno() を持つ オブジェクトです。待機可能なオブジェクトの 3 つのシーケンスはそれぞれ 入力、出力、そして `例外状態' に対応します。いずれかに空のシーケンスを 指定してもかまいませんが、3 つ全てを空のシーケンスにしてもよいかどうか はプラットフォームに依存します (Unix では動作し、Windows では 動作しないことが知られています)。オプションの timeout 引数 にはタイムアウトまでの秒数を浮動小数点数型で指定します。 timeout 引数が省略された場合、関数は少なくとも一つのファイル 記述子が何らかの準備完了状態になるまでブロックします。 タイムアウト値ゼロは、ポーリングを行いブロックしないことを示します。

戻り値は準備完了状態のオブジェクトからなる 3 つのリストです: 従ってこのリストはそれぞれ関数の最初の 3 つの引数のサブセットに なります。ファイル記述子のいずれも準備完了にならないままタイムアウト した場合、3 つの空のリストが返されます。

シーケンスの中に含めることのできるオブジェクトは Python ファイル オブジェクト (すなわち sys.stdin, あるいは open()os.popen() が返すオブジェクト)、socket.socket() が返すソケットオブジェクト です。 wrapper クラスを自分で定義することもできます。この場合、 適切な (単なる乱数ではなく本当のファイル記述子を返す)fileno() メソッドを持つ必要があります 注意: select はWindows のファイルオブジェクトを受理 しませんが、ソケットは受理します 。 Windows では、 背後の select() 関数は WinSock ライブラリで提供されて おり、WinSock によって生成されたものではないファイル記述子を扱う ことができないのです



Subsections
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。