7.3 組み込みモジュール select

 

このモジュールは大抵のUnixで利用可能な関数select()へのアクセスを 提供します。以下のものを定義しています。

error
エラーが発生したときこの例外が発生します。errnoのエラーコードと Cの関数perror()で出力されるようなそれに対応する文字列が付随します。

select (iwtd, owtd, ewtd[, timeout])
これはUnixのselect()システムコールへの直接的なインタフェースです。 最初の3つの引数は「待てるオブジェクト」のリストです。 つまり、それらはUnixファイルディスクリプタを表す整数か、そのような整数を返す 引数無しのfileno()という名前のメソッドを持つオブジェクトです。 「待てるオブジェクト」の3つのリストはそれぞれ入力、出力、例外的な 条件を待つためのものです。それには空リストも許されます。 オプションのtimeout引数は秒を単位とする浮動小数 でタイムアウト値を指定します。timeout引数が省略されると、この関数は 少なくとも一つファイルディスクリプタがレディになるまで停止します。 タイムアウト値が0の場合にはポーリングを指定し、停止することは決してありません。

戻り値はレディとなったオブジェクトのリストを3個持つタプルです。つまり最初の 3つの引数の部分集合です。 ファイルディスクリプタがレディにならないでタイムアウトすると、3つの空リストが 返されます。

リストの中に入れられるオブジェクトタイプはパイソンのファイルオブジェクト (例えばsys.stdinまたはopen()os.popen()が返す オブジェクト)、socket.socket()が返すソケットオブジェクト、および       たまたまこの目的のために関数fileno()  を定義した モジュールstdwin などです。 自分で適切なfileno()メソッド(ランダムな整数ではなく実際にUnix ファイルディスクリプタを返す)を持つwrapperクラスを定義することも 可能です。

guido@python.org