I/O多重化のシステムコールのselect, poll, epoll, kqueueをPythonで試してみましたー。Pythonは2.7系を利用しました。

クライアント側の接続テスト

サーバ側はUnix Domain Socketで待ち受けるサンプルを作ったので、クライアント側はtelnetかsocatで接続します。

テストはこんな感じで↓

select

こんな感じ

poll, epoll

Mac OS Xだと対応していなかったので、Ubuntuで試しましたー。イベントマスクはかなり適当。

poll, epollから返されるのがファイルディスクリプタそのものなので、それをソケットなりファイルオブジェクトなりに変換しないといけないです。

epollの場合は上記コードをselect.poll()をselect.epoll()にして、イベントマスクの定数を変えればOK。

kqueue

Ubuntuだと対応していなかったのでMac OS Xで試しましたー

参考URL