[解決済み] Pythonはスタック/ヒープを持ち、メモリはどのように管理されていますか?
質問
Pythonでは変数やメモリはどのように管理されているのでしょうか?スタックとヒープがあり、メモリを管理するためにどのようなアルゴリズムが使用されていますか?この知識を考えると、大規模な数/データクランシングのためのメモリ管理に関する推奨事項はありますか?
どのように解決するのですか?
<ブロッククオートPythonでは変数やメモリはどのように管理されているのでしょうか。
自動的です! いいえ、本当に、あなたはただオブジェクトを作成し、Python仮想マシンは、必要なメモリとそれがメモリレイアウトで配置されなければならない場所を処理します。
<ブロッククオートスタックとヒープがあるのですか? どのようなアルゴリズムが使われているのでしょうか?
について話しているとき
CPython
を使用します。
プライベートヒープ
を使います。
CPython C API ドキュメントより
:
Pythonのメモリ管理は、すべてのPythonオブジェクトとデータ構造を含むプライベートヒープを含みます。 Pythonのオブジェクトとデータ構造が含まれています。このプライベート ヒープの管理は、Pythonのメモリマネージャによって内部的に保証されています。Pythonの Pythonのメモリマネージャは、さまざまなコンポーネントを持ち、共有やデータ構造など、さまざまな動的ストレージ管理の側面を扱います。 Pythonのメモリマネージャは、共有、セグメンテーション、事前割り当て、キャッシュなど、さまざまな動的ストレージ管理の側面を扱うさまざまなコンポーネントを持っています。 プリ・アロケーションやキャッシングなどです。
メモリの再利用は主に 参照カウント . つまり、Python VMはオブジェクトを参照している参照の数を内部ジャーナルとして保持し、オブジェクトを参照している参照が無くなると自動的にガベージコレクションを行います。さらに 循環参照を解除するメカニズム (参照カウントでは処理できない) 循環参照を断ち切るためのメカニズムがあります。 伝統的な GC アルゴリズムの逆をいくらか行く とは逆に、到達可能なすべてのオブジェクトを見つけようとします。
注意
この情報は
CPython
特有のものです。他の Python 実装、例えば
pypy
,
iron python
,
jython
などは、その実装の仕様に関して、互いに、またCPythonとは異なるかもしれません。それをよく理解するために
Pythonはセマンティクス(言語)と基礎となる実装の間に違いがあることを理解する助けになるかもしれません。
この知識があれば、大きな数/データクランチングのためのメモリ管理に関する推奨事項がありますか?
今、私はこのことについて話すことはできませんが、私は確信しています。 NumPy (数値計算のための最も人気のある Python ライブラリ) には、メモリの消費を優雅に処理するメカニズムがあることを確信しています。
Pythonの内部についてもっと知りたい場合は、以下のリソースを参照してください。
関連
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] モジュールの関数名(文字列)を使って、モジュールの関数を呼び出す。
-
[解決済み] Pythonで明示的にメモリを解放するにはどうしたらいいですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】なぜC++プログラマは'new'の使用を最小限に抑えなければならないのでしょうか?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] あるメソッドが複数の引数のうち1つの引数で呼び出されたことを保証する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Java「仮想マシン」vs Python「インタプリタ」の言い分け?
-
[解決済み] PythonでファイルのMD5チェックサムを計算するには?重複
-
[解決済み] Spyderを仮想環境で動作させるには?
-
[解決済み] dict を txt ファイルに書き、それを読み取る?
-
[解決済み] PythonからSMTPを使用してメールを送信する
-
[解決済み] 文字列のリストを内容に基づいてフィルタリングする
-
[解決済み] あるオブジェクトが数であるかどうかを確認する、最もパイソン的な方法は何でしょうか?
-
[解決済み] Pythonでマルチプロセッシングキューを使うには?
-
[解決済み] tensorflowのCPUのみのインストールでダイナミックライブラリ 'cudart64_101.dll' を読み込めなかった
-
[解決済み] Pythonでファイルの読み込みと上書きをする