18

サブインタープリター API が存在する理由と、それが mod_wsgi Apache モジュールなどのモジュールで使用される理由については不明です。主に、同じプロセス内で実行されるさまざまなアプリケーションのセキュリティ サンドボックスを作成するために使用されますか?それとも、複数のスレッドで同時実行を許可する方法ですか? 多分両方?他の目的はありますか?

4

2 に答える 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 に答える