def __mopemope__(self, *args, **kwargs): このページをアンテナに追加 RSSフィード

2008-09-19

[]python2.6からはepoll、kqueueが使える

こんにちはDQNです!

python2.6はいろいろ変更点が入って便利になります。

python2.6からはselectモジュールにepoll、kqueueが追加されます。

DQNが思うに変更点の目玉のひとつかだけど余り触れられてないと思うので書いて見る。

ほぼCのラッパーなので使い方もほぼ同じです。

Macなのでkqueueのサンプルです

from select import *

kq = kqueue()

file = open('test.txt', 'r')

ke = kevent(file.fileno(), KQ_FILTER_VNODE,\
        KQ_EV_ADD|KQ_EV_ENABLE|KQ_EV_ONESHOT,\
        KQ_NOTE_WRITE|KQ_NOTE_DELETE, 0, 0)

active = True
while active:
    events = kq.control([ke], 1)
    for k in events:
        if k.fflags & KQ_NOTE_DELETE:
            print("File deleted\n")
            active = False

違いは

  1. フラグの頭にKQ_がくっつく
  2. EV_SETマクロ = kevent
  3. kevent関数 = control

ぐらいです。

この例ではtest.txtの削除を監視します。

test.txtが削除されたら、メッセージ出力して抜けます。

ちなみにpythonドキュメントでkeventもkqueueになってるけど間違いだと思う。

DQNが書いた)

もちろんpython3kでも使えますよ。

これでラッパーともおさらば!

追記:

なんか間違ってたっぽいのでソース修正

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証