0

Java や Ruby などには多くの継続ベースのフレームワークがありますが、Python にはありません。ながれフレームワークはこの問題をある程度解決しますが、標準の python を使用せず、スタックレス python を使用して継続の問題を解決します。

私は考えていた、

標準のpythonでそのような継続Webフレームワークを作成するための標準のpython制約のどの部分ですか?

それに対する回避策は何ですか?継続フレームワーク アーキテクチャの標準部分は何ですか (モデル ビュー コントローラーは MVC にあるため)。

4

2 に答える 2

2

継続ベースのフレームワークの作成を検討する前に、継続 (または少なくとも継続をエミュレートするために使用できるコルーチン) を持つプログラミング言語が必要です。継続は、ループやクロージャー、関数などの制御構造であり、MVC のような設計パターンではありません。残念ながら、(現在の) 標準の Python は継続をサポートしていません。これは、人々がスタックレス python を開発した理由の 1 つです。

Java は少し特殊なケースです。言語自体は継続をサポートしていませんが、仮想マシンは (例外をサポートするために) 継続をサポートしています。彼らがしたことは、実行時にコンパイルされたバイトコードを変更し、命令を並べ替えて、継続をサポートしているように見せることだったと思います。モンキーパッチでスタックレス python を実装するようなものです。

于 2010-09-18T04:42:23.543 に答える
2

そうです、継続は言語の特性であり、悲しいことに CPython には継続がありません。

純粋な Python での回避策はよく知られています。たとえば、Twisted や Tornado などのコールバック/遅延を使用するか、どこでも「yield」を使用して、Diesel などのコルーチンを模倣します。ただし、どちらのアプローチでも、アプリケーションの設計とコーディングの方法を変更する必要があります。また、継続を「再生」することもできます。これは、継続ベースのフレームワークが「戻る」ボタンの問題を自動的に処理する方法です。

最後に、正確には、ながれでは、フリーズしたタスクレットの酸洗を使用して継続オブジェクトを取得しています。

于 2010-09-18T20:45:04.113 に答える