サブインタープリター API が存在する理由と、それが mod_wsgi Apache モジュールなどのモジュールで使用される理由については不明です。主に、同じプロセス内で実行されるさまざまなアプリケーションのセキュリティ サンドボックスを作成するために使用されますか?それとも、複数のスレッドで同時実行を許可する方法ですか? 多分両方?他の目的はありますか?
4481 次
2 に答える
13
目的は、個別の python 実行環境を作成することだと思います。たとえば、mod_wsgi (Apache Python モジュール) は単一の Python インタープリターをホストし、サブインタープリター内で複数のアプリケーションをホストします (デフォルト構成)。
ドキュメントの重要なポイント:
- これは、Python コードを実行するための (ほぼ) 完全に独立した環境です。
__builtin__
特に、新しいインタープリターには、基本モジュール__main__
およびを含む、インポートされたすべてのモジュールの個別の独立したバージョンがありsys
ます。 - 読み込まれたモジュールのテーブル (sys.modules) とモジュールの検索パス (sys.path) も分離されています。
- サブインタープリター (およびメインインタープリター) は同じプロセスの一部であるため、それらの間の分離は完全ではありません。他の開いているファイル。
- 拡張機能が (サブ) インタープリター間で共有される方法が原因で、一部の拡張機能が正しく機能しない場合があります。これは、拡張機能が (静的) グローバル変数を使用する場合、または拡張機能が初期化後にモジュールの辞書を操作する場合に特に発生する可能性があります。
于 2009-04-16T07:45:18.543 に答える
0
私が最後に理解したように、アイデアは、複数のアプリケーションと同じアプリケーションの複数のコピーを同じプロセス内で実行できるようにすることでした。
これは、他のスクリプト言語 (TCL など) に見られる機能であり、特に GUI ビルダーや Web サーバーなどで使用されます。
多くの拡張機能は複数のインタープリターに対して安全ではないため、Python では機能しません。そのため、あるインタープリターのアクションが別のインタープリターの変数に影響を与える可能性があります。
于 2013-09-30T22:08:59.297 に答える