<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### 導航 - [索引](../genindex.xhtml "總目錄") - [模塊](../py-modindex.xhtml "Python 模塊索引") | - [下一頁](inspect.xhtml "inspect --- 檢查對象") | - [上一頁](__future__.xhtml "__future__ --- Future 語句定義") | - ![](https://box.kancloud.cn/a721fc7ec672275e257bbbfde49a4d4e_16x16.png) - [Python](https://www.python.org/) ? - zh\_CN 3.7.3 [文檔](../index.xhtml) ? - [Python 標準庫](index.xhtml) ? - [Python運行時服務](python.xhtml) ? - $('.inline-search').show(0); | # [`gc`](#module-gc "gc: Interface to the cycle-detecting garbage collector.") --- 垃圾回收器接口 - - - - - - 此模塊提供可選的垃圾回收器的接口,提供的功能包括:關閉收集器、調整收集頻率、設置調試選項。它同時提供對回收器找到但是無法釋放的不可達對象的訪問。由于 Python 使用了帶有引用計數的回收器,如果你確定你的程序不會產生循環引用,你可以關閉回收器。可以通過調用 `gc.disable()` 關閉自動垃圾回收。若要調試一個存在內存泄漏的程序,調用 `gc.set_debug(gc.DEBUG_LEAK)` ;需要注意的是,它包含 `gc.DEBUG_SAVEALL` ,使得被垃圾回收的對象會被存放在 gc.garbage 中以待檢查。 [`gc`](#module-gc "gc: Interface to the cycle-detecting garbage collector.") 模塊提供下列函數: `gc.``enable`()啟用自動垃圾回收 `gc.``disable`()停用自動垃圾回收 `gc.``isenabled`()如果自動回收啟用,則返回 True `gc.``collect`(*generation=2*)若被調用時不包含參數,則啟動完全的垃圾回收。可選的參數 *generation* 可以是一個整數,指明需要回收哪一代(從 0 到 2 )的垃圾。當參數 *generation* 無效時,會引發 [`ValueError`](exceptions.xhtml#ValueError "ValueError") 異常。返回發現的不可達對象的數目。 每當運行完整收集或最高代 (2) 收集時,為多個內置類型所維護的空閑列表會被清空。 由于特定類型特別是 [`float`](functions.xhtml#float "float") 的實現,在某些空閑列表中并非所有項都會被釋放。 `gc.``set_debug`(*flags*)設置垃圾回收器的調試標識位。調試信息會被寫入 `sys.stderr` 。此文檔末尾列出了各個標志位及其含義;可以使用位操作對多個標志位進行設置以控制調試器。 `gc.``get_debug`()返回當前調試標識位。 `gc.``get_objects`()返回一個含有所有被收集器跟蹤的對象的列表。返回的列表中不包括該函數返回的對象。 `gc.``get_stats`()返回一個包含三個字典對象的列表,每個字典分別包含對應代的從解釋器開始運行的垃圾回收統計數據。字典的鍵的數目在將來可能發生改變,目前每個字典包含以下內容: - `collections` 是該代被回收的次數; - `collected` 是該代中被回收的對象總數; - `uncollectable` 是在這一代中被發現無法收集的對象總數 (因此被移動到 [`garbage`](#gc.garbage "gc.garbage") 列表中)。 3\.4 新版功能. `gc.``set_threshold`(*threshold0*\[, *threshold1*\[, *threshold2*\]\])設置垃圾回收閾值(收集頻率)。 將 *threshold0* 設為零會禁用回收。 垃圾回收器把所有對象分類為三代,取決于對象幸存于多少次垃圾回收。新創建的對象會被放在最年輕代(第 `0` 代)。如果一個對象幸存于一次垃圾回收,則該對象會被放入下一代。第 `2` 代是最老的一代,因此這一代的對象幸存于垃圾回收后,仍會留在第 `2` 代。為了判定何時需要進行垃圾回收,垃圾會收器會跟蹤上一次回收后,分配和釋放的對象的數目。當分配對象的數量減去釋放對象的數量大于閾值 *threshold0* 時,回收器開始進行垃圾回收。起初只有第 `0` 代會被檢查。當上一次第 `1` 代被檢查后,第 `0` 代被檢查的次數多于閾值 *threshold1* 時,第 `1` 代也會被檢查。相似的, *threshold2* 設置了觸發第 `2` 代被垃圾回收的第 `1` 代被垃圾回收的次數。 `gc.``get_count`()將當前回收計數以形為 `(count0, count1, count2)` 的元組返回。 `gc.``get_threshold`()將當前回收閾值以形為 `(threshold0, threshold1, threshold2)` 的元組返回。 `gc.``get_referrers`(*\*objs*)返回直接引用任意一個 *ojbs* 的對象列表。這個函數只定位支持垃圾回收的容器;引用了其它對象但不支持垃圾回收的擴展類型不會被找到。 需要注意的是,已經解除對 *objs* 引用的對象,但仍存在于循環引用中未被回收時,仍然會被作為引用者出現在返回的列表當中。若要獲取當前正在引用 *objs* 的對象,需要調用 [`collect()`](#gc.collect "gc.collect") 然后再調用 [`get_referrers()`](#gc.get_referrers "gc.get_referrers") 。 在使用 [`get_referrers()`](#gc.get_referrers "gc.get_referrers") 返回的對象時必須要小心,因為其中一些對象可能仍在構造中因此處于暫時的無效狀態。不要把 [`get_referrers()`](#gc.get_referrers "gc.get_referrers") 用于調試以外的其它目的。 `gc.``get_referents`(*\*objs*)返回被任意一個參數中的對象直接引用的對象的列表。返回的被引用對象是被參數中的對象的C語言級別方法(若存在) [`tp_traverse`](../c-api/typeobj.xhtml#c.PyTypeObject.tp_traverse "PyTypeObject.tp_traverse") 訪問到的對象,可能不是所有的實際直接可達對象。只有支持垃圾回收的對象支持 [`tp_traverse`](../c-api/typeobj.xhtml#c.PyTypeObject.tp_traverse "PyTypeObject.tp_traverse") 方法,并且此方法只會在需要訪問涉及循環引用的對象時使用。因此,可以有以下例子:一個整數對其中一個參數是直接可達的,這個整數有可能出現或不出現在返回的結果列表當中。 `gc.``is_tracked`(*obj*)當對象正在被垃圾回收器監控時返回 `True` ,否則返回 `False` 。一般來說,原子類的實例不會被監控,而非原子類(如容器、用戶自定義的對象)會被監控。然而,會有一些特定類型的優化以便減少垃圾回收器在簡單實例(如只含有原子性的鍵和值的字典)上的消耗。 ``` >>> gc.is_tracked(0) False >>> gc.is_tracked("a") False >>> gc.is_tracked([]) True >>> gc.is_tracked({}) False >>> gc.is_tracked({"a": 1}) False >>> gc.is_tracked({"a": []}) True ``` 3\.1 新版功能. `gc.``freeze`()凍結 gc 所跟蹤的所有對象 —— 將它們移至永久代并忽略所有未來的集合。 這可以在 POSIX fork() 調用之前使用以便令 gc 對寫入復制時保持友好或加速收集。 并且在 POSIX fork() 調用之前的收集也可以釋放頁面以供未來分配,這也可能導致寫入時復制,因此建議在主進程中禁用 gc 并在 fork 之前凍結,而在子進程中啟用 gc。 3\.7 新版功能. `gc.``unfreeze`()解凍永久代中的對象,并將它們放回到年老代中。 3\.7 新版功能. `gc.``get_freeze_count`()返回永久代中的對象數量。 3\.7 新版功能. 提供以下變量僅供只讀訪問(你可以修改但不應該重綁定它們): `gc.``garbage`返回一個列表,列表內為回收器找到的不可達而又不能被釋放的對象(即不可回收對象)。在 Python 3.4 以后,該列表在大多數情況下都是空的,除非使用了含有非空的 `tp_del` 的 C 擴展類型的實例。 如果設置了 [`DEBUG_SAVEALL`](#gc.DEBUG_SAVEALL "gc.DEBUG_SAVEALL") ,則所有不可訪問對象將被添加至該列表而不會被釋放。 在 3.2 版更改: 當 [interpreter shutdown](../glossary.xhtml#term-interpreter-shutdown) 即解釋器關閉時,若此列表非空,會產生 [`ResourceWarning`](exceptions.xhtml#ResourceWarning "ResourceWarning") ,即資源警告,在默認情況下此警告不會被提醒。如果設置了 [`DEBUG_UNCOLLECTABLE`](#gc.DEBUG_UNCOLLECTABLE "gc.DEBUG_UNCOLLECTABLE") ,所有無法被回收的對象會被打印。 在 3.4 版更改: 根據 [**PEP 442**](https://www.python.org/dev/peps/pep-0442) \[https://www.python.org/dev/peps/pep-0442\] ,帶有 [`__del__()`](../reference/datamodel.xhtml#object.__del__ "object.__del__") 方法的對象最終不再會進入 [`gc.garbage`](#gc.garbage "gc.garbage") 。 `gc.``callbacks`在垃圾回收器開始前和完成后會被調用的一系列回調函數。這些回調函數在被調用時使用兩個參數: *phase* 和 *info* 。 *phase* 可為以下兩值之一: > "start": 垃圾回收即將開始。 > > "stop": 垃圾回收已結束。 *info* is a dict providing more information for the callback. The following keys are currently defined: > "generation"(代) :正在被回收的最久遠的一代。 > > "collected"(已回收的 ): 當\*phase\* 為 "stop" 時,被成功回收的對象的數目。 > > "uncollectable"(不可回收的): 當 *phase* 為 "stop" 時,不能被回收并被放入 [`garbage`](#gc.garbage "gc.garbage") 的對象的數目。 應用程序可以把他們自己的回調函數加入此列表。主要的使用場景有: > 統計垃圾回收的數據,如:不同代的回收頻率、回收所花費的時間。 > > 使應用程序可以識別和清理他們自己的在 [`garbage`](#gc.garbage "gc.garbage") 中的不可回收類型的對象。 3\.3 新版功能. 以下常量被用于 [`set_debug()`](#gc.set_debug "gc.set_debug") : `gc.``DEBUG_STATS`在回收完成后打印統計信息。當回收頻率設置較高時,這些信息會比較有用。 `gc.``DEBUG_COLLECTABLE`當發現可回收對象時打印信息。 `gc.``DEBUG_UNCOLLECTABLE`打印找到的不可回收對象的信息(指不能被回收器回收的不可達對象)。這些對象會被添加到 `garbage` 列表中。 在 3.2 版更改: 當 [interpreter shutdown](../glossary.xhtml#term-interpreter-shutdown) 時,即解釋器關閉時,若 [`garbage`](#gc.garbage "gc.garbage") 列表中存在對象,這些對象也會被打印輸出。 `gc.``DEBUG_SAVEALL`設置后,所有回收器找到的不可達對象會被添加進 *garbage* 而不是直接被釋放。這在調試一個內存泄漏的程序時會很有用。 `gc.``DEBUG_LEAK`調試內存泄漏的程序時,使回收器打印信息的調試標識位。(等價于 `DEBUG_COLLECTABLE | DEBUG_UNCOLLECTABLE | DEBUG_SAVEALL` )。 ### 導航 - [索引](../genindex.xhtml "總目錄") - [模塊](../py-modindex.xhtml "Python 模塊索引") | - [下一頁](inspect.xhtml "inspect --- 檢查對象") | - [上一頁](__future__.xhtml "__future__ --- Future 語句定義") | - ![](https://box.kancloud.cn/a721fc7ec672275e257bbbfde49a4d4e_16x16.png) - [Python](https://www.python.org/) ? - zh\_CN 3.7.3 [文檔](../index.xhtml) ? - [Python 標準庫](index.xhtml) ? - [Python運行時服務](python.xhtml) ? - $('.inline-search').show(0); | ? [版權所有](../copyright.xhtml) 2001-2019, Python Software Foundation. Python 軟件基金會是一個非盈利組織。 [請捐助。](https://www.python.org/psf/donations/) 最后更新于 5月 21, 2019. [發現了問題](../bugs.xhtml)? 使用[Sphinx](http://sphinx.pocoo.org/)1.8.4 創建。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看