最初の 3 つの引数は `待機可能なオブジェクト' からなるシーケンスです: ファイル記述子を表す整数値、または引数を持たず、整数を返すメソッド fileno() を持つオブジェクトです。
poll@ select module
register(fd[, eventmask])
ファイル記述子をポーリングオブジェクトに登録します。これ以降の poll() メソッド呼び出しでは、そのファイル記述子に処理待ち中の I/O イベントがあるかどうかを監視します。fd は整数か、整数値を返す fileno() メソッドを持つオブジェクトを取ります。ファイルオブジェクトも通常 fileno() を実装しているので、引数として使うことができます。
poll([timeout])
登録されたファイル記述子に対してポーリングを行い、報告すべき I/O イベントまたはエラーの発生したファイル記述子に毎に 2 要素のタプル (fd, event) からなるリストを返します。
つ~~かなんでpollはオブジェクトかえさねーんだ?!寿命管理に問題が生じるからか?
おかげでmapを用意して管理する必要が出てくる。
たとえばasyncore.pyの131行目
r = poll.poll (l, timeout)
for fd, flags in r:
try:
obj = map[fd]
try:
0 件のコメント:
コメントを投稿