次のコードは、基本的に猫select.selectのファイルは():私もそのファイルディスクリプタを読んだselect.select()はepoll()ではなくディスクファイルで動作するのはなぜですか?
self._impl.register(fd, events | self.ERROR)
IOError: [Errno 1] Operation not permitted
:私はファイルディスクリプタと同じようなことをしようとすると
f = open('node.py')
fd = f.fileno()
while True:
r, w, e = select.select([fd], [], [])
print '>', repr(os.read(fd, 10))
time.sleep(1)
私はエラーを取得しますディスクファイルをサポートしていないか、おそらくそれは意味をなさないということです。
しかし、なぜ、その後()のサポートディスクのファイルを選択しますか?私はselectmodule.cの実装を見ていて、オペレーティングシステムに移行しているようです。つまり、Pythonは特別なサポートを追加していません。
私は、ノンブロッキングサーバーで静的ファイルを提供する最善の方法を試しています。私は、ディスクから読み込み、ソケットに書き込むメインイベントループスレッドにデータを送るI/Oスレッドを作成しようとします。
をブロックし、[OK]、ので、私のos.read()はで呼び出します選択ループがブロックされます。理にかなっている。 –
@ user1117755はい、ハードドライブを待つ必要がある場合はブロックします。 – nos