web-dev-qa-db-ja.com

イベントレットvsグリーンレットvs gevent?

イベントループを持つGUIフレームワークを作成しようとしています。 UIを処理するためのスレッドと、イベント処理のためのスレッド。少し検索したところ、これらの3つのライブラリが見つかりました。どちらを使用した方がいいのでしょうか。長所と短所は何ですか?

これら3つのライブラリのいずれかを使用するか、python threads、またはconcurrentライブラリを使用して自分用に作成することもできます。

あらゆる種類の経験、ベンチマーク、比較を共有していただければ幸いです。

18
mehdy
  • Greenletは低レベルのライブラリであり、その上にライトレットライブラリ(EventletやGeventなど)を作成できるため、この目的でGreenletを使用したくはありません。
  • Eventlet、Gevent、およびその他の類似のライブラリーは、IOにバインドされたタスク(ファイル、ネットワークでの読み取り/書き込みを待機)のための優れたツールセットを提供します。
  • おそらく、ほとんどのGUIコードは、他のスレッド(この時点では緑/光/ OSスレッドは無関係)が終了するのを待ちます。これは、上記のライブラリの完全なターゲットです。
  • すべてのグリーンスレッドライブラリはほとんど同じです。すべてを試して、どれがプロジェクトに最適かを決定します。
  • ただし、OSレベルのGUIレイヤーの要件により、別のOSスレッドにいくつかのものを抽出する必要がある場合もあります。
  • それと、Python3でのスレッドロックのより良い実装を考慮すると、アプリケーションが数百以上のスレッドを必要としない場合は、ネイティブthreadingモジュールをそのまま使用することをお勧めします。
13
temoto