私たちには1つのインタープリタしかないシステムがあります。多くのユーザースクリプトがこのインタープリターを経由します。私たちは各スクリプトのメモリ使用量を制限したいと思っています。プロセスのみが存在し、そのプロセスはスクリプトごとにタスクレットを呼び出します。したがって、1つのインタプリタと1つのプロセスしかないので、各スクリプトのメモリ使用量を制限する方法はわかりません。これを行う最善の方法は何ですかPythonスクリプトのメモリを追跡する方法
答えて
私はそれはまったく可能ではないと思います。あなたの質問は、あなたのタスクレットで使用されるメモリが完全に分離されていることを意味します。おそらくそうではありません。 Pythonは整数のような小さなオブジェクトを最適化しています。私の知る限りでは、コード内の各3
は同じオブジェクトを使用していますが、これは問題ではありません。したがって、あなたのタスクレットのうちの2つが同じ(小さい?)整数を使用する場合、それらはすでにメモリを共有しています。 ;-)
もし2人のPythonインタプリタを使っていても、dllのコードを共有していたとしても(少なくともWindowsでは、他のすべてのOSでは同じと思います;)したがって、スレッドごとに "private workingset"を定義するか、それは可能です - 問題は、Pythonがそれを行う能力を持っているかどうかです。おそらくそうではありません。 – Voo
メモリはOSプロセスレベルで分離されています。どのタスクレットに、どのスレッドに特定のオブジェクトが属しているのかを伝える簡単な方法はありません。
また、どのタスクレットまたはスレッドがメモリを割り当てているかを分析し、あまり割り当てることを防止するカスタムブックキーピングアロケータを追加する簡単な方法はありません。また、解放されたオブジェクトをディスエーブルするためにガベージコレクションコードにプラグインする必要があります。
カスタムPythonインタプリタを書くことを熱望していない限り、タスクごとのプロセスを使用することが最善の策です。
別のスクリプトを実行する必要があるたびに、インタープリタを強制終了して再起動する必要はありません。いくつかのインタプリタをプールし、スクリプトを実行した後に特定のメモリしきい値を超えたものだけを殺す。必要に応じてOSによって提供される手段によるインタプリタのメモリ消費を制限する。
タスク間で大量の共通データを共有する必要がある場合は、共有メモリを使用します。小さなインタラクションの場合は、ソケットを使用します(必要に応じてメッセージレベルが上にあります)。
はい、これは現在の設定より遅い場合があります。しかし、あなたのPythonを使用して、私はこれらのスクリプトでは、とにかく時間クリティカルな計算をしないと思います。
- 1. Instrumentsで増加するメモリを追跡する方法は?
- 2. ビジュアルスタジオ2017(C++)のメモリ使用量を追跡する方法は?
- 3. bashでメモリ使用量を追跡する方法
- 4. Python関数による最大*メモリ使用量の追跡
- 5. Pythonループの結果を追跡する最良の方法
- 6. 追跡メモリ警告ソース - iOS
- 7. 追跡する方法EXC_BAD_ACESS
- 8. XCodeベースの単体テストから "メモリ不足"エラーを追跡する方法
- 9. Pythonコードを実行しているときに使用される仮想メモリを追跡する方法は?
- 10. postgresのアーカイブログファイルを追跡する方法
- 11. UICollectionViewのインデックスを追跡する方法
- 12. Rubyスクリプトでメモリリークを追跡する
- 13. EASTLを使用してメモリ使用量を追跡する方法は?
- 14. GDB Pythonスクリプトによる指示の追跡
- 15. 構成スクリプトの依存関係の追跡を無効にする方法
- 16. googlemapsイベントの追跡方法
- 17. Piwik - クリックイベントの追跡方法
- 18. 城ウィンザーの追跡方法
- 19. ランチャーオーケストレーションツールでイベントを追跡する方法
- 20. Akka Messagingを追跡する方法
- 21. ユーザー数を追跡する方法
- 22. メソッドパラメータを追跡する方法は?
- 23. AsynchHttpClientリクエストを追跡する方法
- 24. VB6でイベントを追跡する方法
- 25. NashornでReferenceErrorを追跡する方法
- 26. インテントを追跡する方法
- 27. Python UPS XML追跡
- 28. モジュールをインポートするPython:そのorginを追跡する方法PYTHONPATH、sys、os
- 29. Cプログラムのヒープ領域のメモリを追跡するには?
- 30. ページの更新方法を追跡する方法
"私たちには1台のインタープリタしかないシステムがあります"。複数のインタプリタを使って、自分自身で多くの作業を省き、実際のシステムを手に入れましょう。 –