[Python-checkins] peps: PEP 454: remove filters on tracing

victor.stinner python-checkins at python.org
Sat Nov 9 03:14:22 CET 2013


http://hg.python.org/peps/rev/e025eac2d050
changeset:   5259:e025eac2d050
user:        Victor Stinner <victor.stinner at gmail.com>
date:        Sat Nov 09 03:13:58 2013 +0100
summary:
  PEP 454: remove filters on tracing

* Remove add_filter(), get_filters(), clear_filters()
* Remove the default filter on tracemalloc.py
* Give more explanation on the impacts of set_traceback_limit()

files:
  pep-0454.txt |  114 +++++++++++---------------------------
  1 files changed, 33 insertions(+), 81 deletions(-)


diff --git a/pep-0454.txt b/pep-0454.txt
--- a/pep-0454.txt
+++ b/pep-0454.txt
@@ -99,10 +99,6 @@
 tracemalloc=25`` command line option. The ``set_traceback_limit()``
 function can be used at runtime to set the limit.
 
-By default, Python memory blocks allocated in the ``tracemalloc`` module
-are ignored using a filter. Use ``clear_filters()`` to trace also these
-memory allocations.
-
 
 Main functions
 --------------
@@ -136,22 +132,17 @@
 
 ``start()`` function:
 
-    Start tracing Python memory allocations.
-
-    The function installs hooks on Python memory allocators. These hooks
-    have important overhead in term of performances and memory usage:
-    see `Filter functions`_ to limit the overhead.
+    Start tracing Python memory allocations: install hooks on Python
+    memory allocators.
 
     See also ``stop()`` and ``is_tracing()`` functions.
 
 
 ``stop()`` function:
 
-    Stop tracing Python memory allocations and clear traces of memory
-    blocks allocated by Python.
-
-    The function uninstalls hooks on Python memory allocators, so the
-    overhead of the module becomes null.
+    Stop tracing Python memory allocations: uninstall hooks on Python
+    memory allocators. Clear also traces of memory blocks allocated by
+    Python
 
     Call ``take_snapshot()`` function to take a snapshot of traces
     before clearing them.
@@ -165,8 +156,7 @@
     Return a new ``Snapshot`` instance.
 
     The snapshot does not include memory blocks allocated before the
-    ``tracemalloc`` module started to trace memory allocations nor
-    memory blocks ignored by filters (see ``get_filters()``).
+    ``tracemalloc`` module started to trace memory allocations.
 
     Tracebacks of traces are limited to ``get_traceback_limit()``
     frames. Use ``set_traceback_limit()`` to store more frames.
@@ -209,10 +199,14 @@
 
     Set the maximum number of frames stored in the traceback of a trace.
 
-    Storing the traceback of each memory allocation has an important
-    overhead on the memory usage. Use the ``get_tracemalloc_memory()``
-    function to measure the overhead and the ``add_filter()`` function
-    to select which memory allocations are traced.
+    Storing more frames allocates more memory of the ``tracemalloc``
+    module and makes Python slower. Use the ``get_tracemalloc_memory()``
+    function to measure how much memory is used by the ``tracemalloc``
+    module.
+
+    Storing more than ``1`` frame is only useful to compute statistics
+    grouped by ``'traceback'`` or to compute cumulative statistics: see
+    the ``Snapshot.statistics()`` method.
 
     If the limit is set to ``0`` frame, a traceback with a frame will be
     used for all traces: filename ``'<unknown>'`` at line number ``0``.
@@ -224,70 +218,25 @@
     command line option can be used to set the limit at startup.
 
 
-Filter functions
-----------------
-
-Tracing all Python memroy allocations has an important overhead on performances
-and on the memory usage.
-
-To limit the overhead, some files can be excluded or tracing can be restricted
-to a set of files using filters. Examples: ``add_filter(Filter(True,
-subprocess.__file__))`` only traces memory allocations in the ``subprocess``
-module, and ``add_filter(Filter(False, tracemalloc.__file__))`` ignores
-memory allocations in the ``tracemalloc`` module
-
-By default, there is one exclusive filter to ignore Python memory blocks
-allocated by the ``tracemalloc`` module.
-
-Use the ``get_tracemalloc_memory()`` function to measure the memory usage.
-See also the ``set_traceback_limit()`` function to configure how many
-frames are stored.
-
-``add_filter(filter)`` function:
-
-    Add a new filter on Python memory allocations, *filter* is a
-    ``Filter`` instance.
-
-    All inclusive filters are applied at once, a memory allocation is
-    ignored if no inclusive filters match its trace. A memory allocation
-    is ignored if at least one exclusive filter matchs its trace.
-
-    The new filter is not applied on already collected traces. Use the
-    ``clear_traces()`` function to ensure that all traces match the new
-    filter.
-
-
-``clear_filters()`` function:
-
-    Clear the filter list.
-
-    See also the ``get_filters()`` function.
-
-
-``get_filters()`` function:
-
-    Get the filters on Python memory allocations. Return a list of
-    ``Filter`` instances.
-
-    See also the ``clear_filters()`` function.
-
-
 Filter
 ------
 
 ``Filter(inclusive: bool, filename_pattern: str, lineno: int=None, all_frames: bool=False)`` class:
 
-    Filter to select which memory allocations are traced. Filters can be
-    used to reduce the memory usage of the ``tracemalloc`` module, which
-    can be read using the ``get_tracemalloc_memory()`` function.
+    Filter on traces of memory blocks.
 
-    The ``'*'`` joker character can be used in *filename_pattern* to
-    match any substring, including empty string. The ``'.pyc'`` and
-    ``'.pyo'`` file extensions are replaced with ``'.py'``. On Windows,
-    the comparison is case insensitive and the alternative separator
-    ``'/'`` is replaced with the standard separator ``'\'``.
+    See the ``fnmatch.fnmatch()`` function for the syntax of
+    *filename_pattern*. The ``'.pyc'`` and ``'.pyo'`` file extensions
+    are replaced with ``'.py'``.
 
-    Use ``Filter(False, "<unknown>")`` to exclude empty tracebacks.
+    Examples:
+
+    * ``Filter(True, subprocess.__file__)`` only includes traces of the
+      ``subprocess`` module
+    * ``Filter(False, tracemalloc.__file__)``
+      excludes traces of the ``tracemalloc`` module.
+    * ``Filter(False,
+      "<unknown>")`` excludes empty tracebacks
 
 ``inclusive`` attribute:
 
@@ -348,11 +297,14 @@
 
 ``apply_filters(filters)`` method:
 
-    Create a new ``Snapshot`` instance with the filtered ``traces``
-    sequence, *filters* is a list of ``Filter`` instances.
+    Create a new ``Snapshot`` instance with a filtered ``traces``
+    sequence, *filters* is a list of ``Filter`` instances.  If *filters*
+    is an empty list, return a new ``Snapshot`` instance with a copy of
+    the traces.
 
-    If *filters* is an empty list, return a new ``Snapshot`` instance
-    with a copy of the traces.
+    All inclusive filters are applied at once, a trace is ignored if no
+    inclusive filters match it. A trace is ignored if at least one
+    exclusive filter matchs it.
 
 
 ``compare_to(old_snapshot: Snapshot, group_by: str, cumulative: bool=False)`` method:

-- 
Repository URL: http://hg.python.org/peps


More information about the Python-checkins mailing list