2011-07-25 23 views
2

誰かがPython 3で利用できるイベントループライブラリ(またはバインディング)を知っていますか? UNIXシステムだけであれば大丈夫ですが、Windowsも同様に好きです。Python 3のイベントループの実装ですか?

ETA:イベントループシステムを作成することは非常に難しいことではありません。しかし、私は車輪を再発明したくありません(私たちは今でもそうしていないことを奨励しています、でも?))

これはサーバーアプリケーション用に計画されているので、 GUIウィジェットツールキットなどと結びついています。

答えが "いいえ、1つではありません"(たぶん、ちょうどちょっと見つからないと確信しています)、私はおそらくlibev用のPython 3のバインディングを作成します。しかし、あなたがキューに呼び出し可能なイベントを置くイベントシステムを持っている必要があり、作業にそのために

while True: 
    while queue: 
     queue.pop()() 

+0

イベントループは自明です。どんな要件がありますか? –

+0

高性能。理想的にはlibevのようなものです。私はシステムのための私自身のfdベースのイベントループを書くことができますが、私はむしろホイールを再構築したいと思いません。いくつかの実装があります。 Python 3のバインディングはごくわずかです。 –

+0

単純な 'while True:'ループは高性能になります。本当にずっと高くなることはありません。マルチスレッドやネットワーク経由でのイベントのディスパッチなど、何か他のものが必要な場合は、複雑になるだけです。また、システムイベントにフックする必要があります。その場合、サポートが必要ですが、それは簡単なことではありません。 "ハイパフォーマンスイベントループ"の場合、必要なのは 'while True:'だけです。 –

答えて

6

は、私のような何かを示唆しています。

(あなたがそれを言う何でも、このようGTK、Qtの、wxWidgetsの、ncursesの、ココア、Winformsの、など特定フレームワークに結合特定でより興味を持っている場合は!)。

+0

本当に特定のものではなく、ちょうど周りにされている1つは、優れたパフォーマンスを持っていますすべての通常のベルとホイッスル(ファイルディスクリプタ、シグナルなど)をサポートします。それ以外のものがなければ、libev用のpython3用のラッパーを作成するかもしれません。私は確かに、何千万もの時間をかけてホイールを再構築したくはありません。 –

+0

その特定のイベントシステムについて、私はhttp://code.google.com/p/pyev/を調査するかもしれません。 - そのプロジェクトの変更管理システムは、時々python3を言及しているようです。 – Arafangion

+0

ああ愚かな私。私はこのプロジェクトを見た。私はどうにかしてPython 3のサポートを見逃してしまった。最も優れています。それはおそらくなぜ私は午前中の時間帯に質問を投稿すべきではない...!ありがとう! –