この記事では、Python の参照カウントと弱参照について簡単に理解できます (例付き)。一定の参照価値があります。困っている友人は参照できます。お役に立てれば幸いです。
前に書いた:
これまでのソケットシリーズは、主に学んだことの要約と記録を目的として終了しました。
次に、libevent に基づいて同時実行をサポートする HTTP サーバーを作成する予定です。研究会のマスターが以前にHTTPとWebSocketの両方に対応したサーバーを開発していたので、それを読んでとても興味を持ち、このネットワークプログラミングの本を買って読んでみました。私は彼を参考にして合理化されたバージョンを書くつもりです。
は HTTP のみをサポートします。書き終わったらみんなで共有できるので、本番環境では使えませんが、ソースコードを覚えれば自分にとっても大きな成長になると思います。
次にトピックに入ります:
最初にサンプルコードを置きます:
テスト用にコードを作成します。 x オブジェクトにはコンストラクターとデストラクターが含まれます。
x オブジェクトは初めて初期化され、変数 a によって参照されるため、ここでの参照カウントは 1 です。次に、getrefcount を通じて参照の数を取得します。関数 getrefcount の呼び出し自体も a への参照であるため、ここでは 2 になります。
次に、weakref.ref() で弱い参照を作成し、getrefcount で参照カウントを出力した後、カウントが変化していないことがわかります。
w() は、2 つのインスタンスがまったく同じであるかどうか、つまり、同じメモリ アドレスを占有しているかどうかを判断することを意味します。
次に、del a を使用して a を x オブジェクトに逆参照します。ここでの del は x オブジェクトを直接リサイクルするのではなく、逆参照することに注意してください。変数の参照が 0 になると、変数は 0 になることがわかっています。リサイクルします。したがって、x オブジェクトは del を呼び出した後にリサイクルされます。
前のコードを通して、弱参照を呼び出すメソッドがクラス関数のメソッドであることがわかります。ただし、プロキシを使用して、代わりに変数名を使用して呼び出すこともできます。
この時点で、弱参照の使い方を確実にマスターできたと思います。しかし、弱い参照は正確には何をするのでしょうか?
他の多くの高級言語と同様、Python にもガベージ コレクション メカニズムがあります。各オブジェクトには参照カウントがあり、このカウントが 0 に達すると、オブジェクトを安全に破棄できます。
一度にリサイクルできるオブジェクトは 1 つだけであるため、参照カウントでは循環参照のあるオブジェクトをリサイクルできません。相互に参照する一連のオブジェクトは、他のオブジェクトから直接参照されず、アクセスできない場合、永久に存続します。
アプリケーションがこのようなアクセスできないオブジェクト グループを生成し続けると、メモリ リークが発生します。
したがって、弱い参照は、この種の循環参照シナリオの処理に非常に適しています。
以上がPython の参照カウントと弱い参照の簡単な理解 (例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

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

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

WebStorm Mac版
便利なJavaScript開発ツール
