gevent と Tornado は少し異なります。gevent は Twisted (非同期ネットワーク フレームワーク) によく似ていますが、Tornado は Web 専用のフレームワークです。
gevent の主なハイライトは、コルーチンを利用し、コードが同期的に実行されているように見えることですが、実際にはほとんどの IO ブロッキング関数は非ブロッキングであり、制御を gevent メイン ループに返します。これは IO バウンド プログラミングにとって非常に重要です。マルチスレッド コードを記述するのと同じ方法で非常に効率的なシングル スレッド コードを記述できるため、リソースを大量に消費します。
gevent には WSGI リクエスト ハンドラも含まれているため、Tornado のようにスタンドアロンで HTTP リクエストを処理するために使用できます。
Tornado は非同期 Web フレームワークであり、プログラマーが Python で非同期コードを作成することに依存しています。これはBackend
、JavaScript や Java のような複数行の匿名クロージャーやクラスがないため、多くの場合、面倒です。したがって、Tornado を使用して適切なコードを記述することは非常に困難です。たとえば、ブロッキング ライブラリを使用するのは面倒です。
実際、どちらのフレームワークもコアは非同期ですが、結果のコードは少し異なります (gevent でプログラミングする方が簡単です)。
実際に Torando と gevent を一緒に使用することもできますが、私はまだ試していません。