5

重複の可能性:
Python 3のイベントループの実装?

python2.7でイベントループを実装しようとしています。時間イベントに基づいて、また別のアクションが発生した結果として、イベントをトリガーできるようにしたいと思います。

select私はこれに似た何かをするために利用できることを理解しています。

これは正しい方法ですか、それとも私が見逃しているより良い方法がありますか?

4

1 に答える 1

11

イベントループは、イベントを処理/処理するループです。

イベントは、一部のコード部分が関心を持つ可能性があるシステムで発生するものです。

最初に、すべてのコンポーネントがイベントを登録し、その後、init イベントが発生します。

ここで生のコードを提供しているだけです:

listeners = [component1, component2, component3]
eventqueue.add(InitEvent())
while True:
    event = eventqueue.pop()
    for listener in listeners:
        listener.handle_event(event)

がどのようにeventqueue実装され、Event()クラス階層がどのように見えるかは、読者の課題として残されています。メソッドthreading.(R)Lockに s などを使用する場合は注意してください。.pop()

さらに、イベント タイプごとに個別のリスナー リストを作成することもできます。したがって、イベントは、それ (またはそのメソッド) を呼び出すだけで「発生」し.fire()、イベントについて通知するために、それ自体および親のすべてのリスナーを識別するメカニズムを持つことができます。

いずれにせよ、リスナーはイベントに応じて何をするかを自分で決めることができます。

于 2012-10-25T08:32:43.710 に答える