この記事では、Python に関する関連知識を提供します。主に、ガベージ コレクション メカニズムにおける参照カウントの関連内容を紹介します。Python でオブジェクトへのポインターがある場合、ポインターは、オブジェクトです。見てみましょう。皆さんのお役に立てれば幸いです。
[関連する推奨事項: Python3 ビデオ チュートリアル ]
Python の __del__ マジック メソッドは、オブジェクトの終了とも呼ばれます。または、オブジェクトがメモリから削除される直前に呼び出されるメソッドです。実際にはメモリからオブジェクトを削除する仕事はしません。それがどのように起こるかは後で説明します。代わりに、このメソッドは、オブジェクトが削除される前に必要なクリーンアップを実行するために使用されます。たとえば、オブジェクトの作成時に開いていたファイルをすべて閉じます。
このセクションでは、例として次のクラスを使用します。
class MyNameClass: def __init__(self, name): self.name = name def __del__(self): print(f"Deleting {self.name}!")
上記の例では、初期化時に入力として名前を受け入れるクラスを定義しており、ファイナライザーが呼び出されると、関連するインスタンスの名前を出力して通知します。こうすることで、どのオブジェクトがいつメモリから削除されたかを知ることができます。
それでは、CPython はいつメモリからオブジェクトを削除することを決定するのでしょうか?これを行う方法は 2 つあります (CPython 3.10 時点では)。参照カウントとガベージ コレクションです。
参照カウント
Python でオブジェクトへのポインターがある場合、それはそのオブジェクトへの参照です。特定のオブジェクト a について、CPython は、 a を指す他のものがいくつあるかを追跡します。このカウンタがゼロに達した場合、他にオブジェクトが使用されていないため、オブジェクトをメモリから安全に削除できます。例を見てみましょう。
>>> Harward = MyNameClass("Harward") >>> del Harward Deleting Harward! >>>
ここでは、新しいオブジェクト (MyNamedClass("Harward")) を作成し、それへのポインター (Harward =) を作成します。次に、Harwade を削除すると、この参照も削除され、MyNamedClass インスタンスの参照カウントは 0 になります。したがって、CPython はメモリからそれを削除することを決定します。そして、その直前に、その __del__ メソッドが呼び出され、上で見たメッセージが出力されます。
オブジェクトに対して複数の参照を作成した場合、オブジェクトを削除するにはすべての参照を削除する必要があります。
>>> bob = MyNameClass("Bob") >>> bob_two = bob # creating a new pointer to the same object >>> del bob # this doesn't cause the object to be removed... >>> del bob_two # ... but this does Deleting Bob!
もちろん、MyNamedClass インスタンス自体にポインターを含めることができます。結局のところ、これらは任意の Python オブジェクトであり、任意のプロパティを追加できます。例を見てみましょう。
>>> jane = MyNamedClass("Jane") >>> bob = MyNamedClass("Bob") >>> jane.friend = bob # now the "Jane" object contains a pointer to the "Bob" object... >>> bob.friend = jane
上記のコード スニペットで行ったことは、いくつかの循環参照を設定することです。 Jane という名前のオブジェクトには Bob という名前のオブジェクトへのポインタが含まれており、その逆も同様です。次のことを行うと、事態は面白くなります。
>>> del jane >>> del bob
これで、名前空間からオブジェクトへのポインターが削除されました。現在、これらの MyNameClass オブジェクトにはまったくアクセスできませんが、それらが削除されようとしていることを示す印刷メッセージは表示されません。これは、これらのオブジェクトが相互に含まれる参照をまだ持っているため、その参照カウントが 0 ではないためです。
ここで作成するのはループ分離です。この構造では、各オブジェクトはループ内に少なくとも 1 つの参照を持ち、それを存続させますが、ループ内のすべてのオブジェクトをアクセスした名前空間から削除することはできません。
ループ分離の直感的なパフォーマンス
ループ分離を作成したときの直感的なパフォーマンスを次に示します。
まず、2 つのオブジェクトを作成します。各オブジェクトには名前空間内に名前があります。
次に、各オブジェクトにポインターを追加して 2 つのオブジェクトを接続します。
#最後に、両方のオブジェクトの元の名前を削除して、名前空間からポインターを削除します。この時点では、2 つのオブジェクトには名前空間からアクセスできませんが、各オブジェクトにはもう一方のオブジェクトへのポインターが含まれているため、それらの参照カウントはゼロではありません。
したがって、ランタイムの作業メモリから無駄なリサイクル不可能なオブジェクトを排除するには、参照カウントだけでは不十分であることは明らかです。ここで CPython のガベージ コレクターが登場します。
【関連する推奨事項: Python3 ビデオ チュートリアル ]
以上がPython のガベージ コレクション メカニズムにおける参照カウントとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 中国語版
中国語版、とても使いやすい

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
