私たちには1つのインタープリタしかないシステムがあります。多くのユーザースクリプトがこのインタープリターを経由します。私たちは各スクリプトのメモリ使用量を制限したいと思っています。プロセスのみが存在し、そのプロセスはスクリプトごとにタスクレットを呼び出します。したがって、1つのインタプリタと1つのプロセスしかないので、各スクリプトのメモリ使用量を制限する方法はわかりません。これを行う最善の方法は何ですかPythonスクリプトのメモリを追跡する方法
答えて
私はそれはまったく可能ではないと思います。あなたの質問は、あなたのタスクレットで使用されるメモリが完全に分離されていることを意味します。おそらくそうではありません。 Pythonは整数のような小さなオブジェクトを最適化しています。私の知る限りでは、コード内の各3
は同じオブジェクトを使用していますが、これは問題ではありません。したがって、あなたのタスクレットのうちの2つが同じ(小さい?)整数を使用する場合、それらはすでにメモリを共有しています。 ;-)
もし2人のPythonインタプリタを使っていても、dllのコードを共有していたとしても(少なくともWindowsでは、他のすべてのOSでは同じと思います;)したがって、スレッドごとに "private workingset"を定義するか、それは可能です - 問題は、Pythonがそれを行う能力を持っているかどうかです。おそらくそうではありません。 – Voo
メモリはOSプロセスレベルで分離されています。どのタスクレットに、どのスレッドに特定のオブジェクトが属しているのかを伝える簡単な方法はありません。
また、どのタスクレットまたはスレッドがメモリを割り当てているかを分析し、あまり割り当てることを防止するカスタムブックキーピングアロケータを追加する簡単な方法はありません。また、解放されたオブジェクトをディスエーブルするためにガベージコレクションコードにプラグインする必要があります。
カスタムPythonインタプリタを書くことを熱望していない限り、タスクごとのプロセスを使用することが最善の策です。
別のスクリプトを実行する必要があるたびに、インタープリタを強制終了して再起動する必要はありません。いくつかのインタプリタをプールし、スクリプトを実行した後に特定のメモリしきい値を超えたものだけを殺す。必要に応じてOSによって提供される手段によるインタプリタのメモリ消費を制限する。
タスク間で大量の共通データを共有する必要がある場合は、共有メモリを使用します。小さなインタラクションの場合は、ソケットを使用します(必要に応じてメッセージレベルが上にあります)。
はい、これは現在の設定より遅い場合があります。しかし、あなたのPythonを使用して、私はこれらのスクリプトでは、とにかく時間クリティカルな計算をしないと思います。
- 1. Pythonループの結果を追跡する最良の方法
- 2. Python関数による最大*メモリ使用量の追跡
- 3. 追跡する方法EXC_BAD_ACESS
- 4. 追跡メモリ警告ソース - iOS
- 5. Rubyスクリプトでメモリリークを追跡する
- 6. XCodeベースの単体テストから "メモリ不足"エラーを追跡する方法
- 7. 城ウィンザーの追跡方法
- 8. googlemapsイベントの追跡方法
- 9. ユーザー数を追跡する方法
- 10. インテントを追跡する方法
- 11. VB6でイベントを追跡する方法
- 12. モジュールをインポートするPython:そのorginを追跡する方法PYTHONPATH、sys、os
- 13. Pythonでオブジェクトを追跡する
- 14. 追跡する方法追跡後の画像ターゲットモデルオブジェクトが失われた?
- 15. Pythonスクリプトに%記号を追加する方法
- 16. WPFアプリケーションでのメモリ使用量の追跡と管理方法(BEGINNER SCOPE)
- 17. 簡単なJavaScriptの追跡スクリプト
- 18. メモリ不足警告の根本原因を追跡する
- 19. プロセスごとにCPUとメモリの使用量を追跡する
- 20. herokuでアプリケーションのメモリ使用量を追跡する
- 21. C++でメモリ使用量を追跡し、メモリ消費量を評価する
- 22. コンパイラ環境の追跡方法
- 23. C/C++ - Windows - HWNDコンテキストデータの追跡方法
- 24. レベルオーダー、ツリートラバーサル - レベルの追跡方法?
- 25. スマートポインタを使用するときにメモリ割り当てを追跡する方法
- 26. UIViewをアニメーション化する - 位置を追跡する方法は?
- 27. j2meを通じてモバイルデバイスの場所を追跡する方法
- 28. HerokuのRailsアプリケーションのトラフィックとページナビゲーションを追跡する方法
- 29. gitの.gitディレクトリを自分の店で追跡する方法
- 30. 現在のオンラインユーザーを追跡する最良の方法
"私たちには1台のインタープリタしかないシステムがあります"。複数のインタプリタを使って、自分自身で多くの作業を省き、実際のシステムを手に入れましょう。 –