更新: 独自の非同期 Web サーバーの作成 (Dave Beazley によるプレゼンテーションに続く) など、Py3 で多くの作業を行った後、最終的に Python (および私のコードの膨大なスタック) をダンプしました。調べてみてください: GitHub (最近のすべての興味深いコードの 95% がここにあります)、npm (ユーザー フレンドリーとは言えなかったパッケージ マネージャー; よくやったeasy_install
、あなたは自分の名に恥じない)、めちゃくちゃモジュールの巨大なリポジトリ (事実上 24 時間 365 日公開されている大量の新しいものを含む)、巨大で活気のあるコミュニティ、すぐに使える非同期 HTTP とファイル処理...、これらすべて ( V8のおかげで)の 3 分の 1 で光の速度—何が気に入らないのですか?プロパガンダの続きを読む: 「スクリプティングの未来」 (スライド ホスティング提供: SpreeWebdesign )。
Python 3 で asnchronous / non-blocking / AIO http サービスを実行する方法に関する興味深いページhttp://scotdoyle.com/python-epoll-howto.htmlがあります。
非ブロッキングhttpクライアントを含むtornado Webサーバーがあります。サーバーの一部を python 3.1 に移植することはできましたが、クライアントの実装にはpyCurlが必要であり、問題があるようです(参加者の 1 人は、「Libcurl は首が痛い」と述べ、信じられないほど醜い pyCurl を見ています。ページ pyCurl がすぐに py3+ に登場するとは思えません)。
epoll が標準ライブラリで利用できるようになったので、Python を使用して非同期 http リクエストをすぐに実行できるはずです。私は本当に非同期コアなどを使用したくありません。epoll は、このタスクに最適なツールであるという評判があり、Python ディストリビューションの一部であるため、非ブロッキング http に epoll 以外のものを使用することは非常に直感に反します (気が向いたら、私が間違っていることを証明してください)。
ああ、私はスレッド化が恐ろしいと感じています。スレッドなし。私はスタックレスを使用しています。
非同期 http のトピックにさらに興味がある人は、PyCon2010 でのピーター・ポルタンテによるこの講演をお見逃しなく。また興味深いのは基調講演で、スピーカーの antonio rodriguez はある時点で、最新の Web テクノロジ ライブラリを標準ライブラリに含めることの重要性を強調しています。
ほとんどのリソースを消費せずに高いスループットを達成する方法はたくさんあるかもしれません。ただし、スレッド (およびその他の部分的に古いメソッド) を放棄すると考えているのは私だけではありません。google skipfish プロジェクトの人々も同じように考えているようです。彼らは、skipfish は
一部のマルチスレッド クライアントに存在するメモリ管理、スケジューリング、および IPC の非効率性を排除する、シングルスレッドの完全非同期ネットワーク I/O およびデータ処理モデルの多重化。