[Python-checkins] peps: EP 454: reformat
victor.stinner
python-checkins at python.org
Tue Sep 3 00:53:26 CEST 2013
http://hg.python.org/peps/rev/4587a24fba7b
changeset: 5091:4587a24fba7b
user: Victor Stinner <victor.stinner at gmail.com>
date: Tue Sep 03 00:53:13 2013 +0200
summary:
EP 454: reformat
files:
pep-0454.txt | 215 +++++++++++++++++++++-----------------
1 files changed, 118 insertions(+), 97 deletions(-)
diff --git a/pep-0454.txt b/pep-0454.txt
--- a/pep-0454.txt
+++ b/pep-0454.txt
@@ -13,7 +13,7 @@
Abstract
========
-Add a new tracemalloc module to trace Python memory allocations.
+Add a new ``tracemalloc`` module to trace Python memory allocations.
@@ -29,6 +29,14 @@
* Compute delta between two "snapshots"
* Location of a memory allocation: Python filename and line number
+The ``tracemalloc`` module is different than other third-party modules
+like ``Heapy`` or ``PySizer``, because it is focused on the location of
+a memory allocation rather that the object type or object content.
+
+
+API
+===
+
To trace the most Python memory allocations, the module should be
enabled as early as possible in your application by calling
``tracemalloc.enable()`` function, by setting the ``PYTHONTRACEMALLOC``
@@ -36,200 +44,213 @@
line option.
-API
-===
-
Functions
---------
enable():
- Start tracing Python memory allocations.
+ Start tracing Python memory allocations.
disable():
- Stop tracing Python memory allocations and stop the timer started by
- ``start_timer()``.
+ Stop tracing Python memory allocations and stop the timer started by
+ ``start_timer()``.
is_enabled():
- ``True`` if the module is enabled, ``False`` otherwise.
+ Get the status of the module: ``True`` if it is enabled, ``False``
+ otherwise.
get_object_trace(obj):
- Get the trace of a Python object *obj* as a namedtuple with 3 attributes:
+ Get the trace of a Python object *obj* as a namedtuple with 3 attributes:
- - ``size``: size in bytes of the object
- - ``filename``: name of the Python script where the object was allocated
- - ``lineno``: line number where the object was allocated
+ - ``size``: size in bytes of the object
+ - ``filename``: name of the Python script where the object was allocated
+ - ``lineno``: line number where the object was allocated
- Return ``None`` if tracemalloc did not save the location where the object
- was allocated, for example if tracemalloc was disabled.
+ Return ``None`` if tracemalloc did not save the location where the object
+ was allocated, for example if tracemalloc was disabled.
get_process_memory():
- Get the memory usage of the current process as a meminfo namedtuple with
- two attributes:
+ Get the memory usage of the current process as a meminfo namedtuple
+ with two attributes:
- * ``rss``: Resident Set Size in bytes
- * ``vms``: size of the virtual memory in bytes
+ * ``rss``: Resident Set Size in bytes
+ * ``vms``: size of the virtual memory in bytes
- Return ``None`` if the platform is not supported.
+ Return ``None`` if the platform is not supported.
- Use the ``psutil`` module if available.
+ Use the ``psutil`` module if available.
start_timer(delay: int, func: callable, args: tuple=(), kwargs: dict={}):
- Start a timer calling ``func(*args, **kwargs)`` every *delay*
- seconds.
+ Start a timer calling ``func(*args, **kwargs)`` every *delay*
+ seconds.
- The timer is based on the Python memory allocator, it is not real
- time. *func* is called after at least *delay* seconds, it is not
- called exactly after *delay* seconds if no Python memory allocation
- occurred.
+ The timer is based on the Python memory allocator, it is not real
+ time. *func* is called after at least *delay* seconds, it is not
+ called exactly after *delay* seconds if no Python memory allocation
+ occurred.
- If ``start_timer()`` is called twice, previous parameters are
- replaced. The timer has a resolution of 1 second.
+ If ``start_timer()`` is called twice, previous parameters are
+ replaced. The timer has a resolution of 1 second.
- `start_timer()`` is used by ``DisplayTop`` and ``TakeSnapshot``
- to run regulary a task.
+ `start_timer()`` is used by ``DisplayTop`` and ``TakeSnapshot`` to
+ run regulary a task.
stop_timer():
- Stop the timer started by ``start_timer()``.
+ Stop the timer started by ``start_timer()``.
DisplayTop class
----------------
-DisplayTop(count: int, file=sys.stdout) class:
+``DisplayTop(count: int, file=sys.stdout)`` class:
- Display the list of the N biggest memory allocations.
+ Display the list of the N biggest memory allocations.
-display() method:
+``display()`` method:
- Display the top
+ Display the top
-start(delay: int) method:
+``start(delay: int)`` method:
- Start a task using tracemalloc timer to display the top every delay seconds.
+ Start a task using tracemalloc timer to display the top every delay seconds.
-stop() method:
+``stop()`` method:
- Stop the task started by the ``DisplayTop.start()`` method
+ Stop the task started by the ``DisplayTop.start()`` method
-color attribute:
+``color`` attribute:
- Use color if True (bool, default: stream.isatty()).
+ ``display()`` uses colors if ``True`` (bool,
+ default: ``stream.isatty()``).
-compare_with_previous attribute:
+``compare_with_previous`` attribute:
- If ``True``, compare with the previous top if ``True``. If ``False``,
- compare with the first one (bool, default: ``True``): .
+ If ``True``, ``display()`` compares with the previous top if
+ ``True``. If ``False``, compare with the first one (bool, default:
+ ``True``): .
-filename_parts attribute:
+``filename_parts`` attribute:
Number of displayed filename parts (int, default: ``3``).
-show_average attribute:
+``show_average`` attribute:
- If ``True``, show the average size of allocations (bool, default: ``True``).
+ If ``True``, ``display()`` shows the average size of allocations
+ (bool, default: ``True``).
-show_count attribute:
+``show_count`` attribute:
- If ``True``, show the number of allocations (bool, default: ``True``).
+ If ``True``, ``display()`` shows the number of allocations (bool, default: ``True``).
-show_lineno attribute:
+``show_lineno`` attribute:
- If ``True``, use also the line number, not only the filename (bool, default:
- ``True``). If ``False``, only show the filename.
+ If ``True``, use also the line number, not only the filename (bool,
+ default: ``True``). If ``False``, only show the filename.
-show_size attribute:
+``show_size`` attribute:
- if ``True``, show the size of allocations (bool, default: ``True``).
+ If ``True``, ``display()`` shows the size of allocations (bool,
+ default: ``True``).
-user_data_callback attribute:
+``user_data_callback`` attribute:
- Optional callback collecting user data (callable, default:
- ``None``). See ``Snapshot.create()``.
+ Optional callback collecting user data (callable, default:
+ ``None``). See ``Snapshot.create()``.
Snapshot class
--------------
-Snapshot() class:
+``Snapshot()`` class:
- Snapshot of Python memory allocations. Use ``TakeSnapshot`` to regulary
- take snapshots.
+ Snapshot of Python memory allocations. Use ``TakeSnapshot`` to
+ regulary take snapshots.
-create(user_data_callback=None) method:
+``create(user_data_callback=None)`` method:
- Take a snapshot. If user_data_callback is specified, it must be a callable
- object returning a list of (title: str, format: str, value: int). format
- must be "size". The list must always have the same length and the same order
- to be able to compute differences between values.
+ Take a snapshot. If user_data_callback is specified, it must be a
+ callable object returning a list of (title: str, format: str, value:
+ int). format must be "size". The list must always have the same
+ length and the same order to be able to compute differences between
+ values.
- Example: ``[('Video memory', 'size', 234902)]``.
+ Example: ``[('Video memory', 'size', 234902)]``.
-filter_filenames(patterns: str|list, include: bool) method:
+``filter_filenames(patterns: str|list, include: bool)`` method:
- Remove filenames not matching any pattern if include is True, or remove
- filenames matching a pattern if include is False (exclude). See
- fnmatch.fnmatch() for the syntax of patterns.
+ Remove filenames not matching any pattern if include is True, or
+ remove filenames matching a pattern if include is False (exclude).
+ See fnmatch.fnmatch() for the syntax of patterns.
-write(filename) method:
+``write(filename)`` method:
- Write the snapshot into a file.
+ Write the snapshot into a file.
-load(filename), classmethod:
+``load(filename)`` classmethod:
- Load a snapshot from a file.
+ Load a snapshot from a file.
-pid attribute:
+``process_memory`` attribute:
- Identifier of the process which created the snapshot (int).
+ Memory usage of the process, result of ``get_process_memory()``.
+ It can be ``None``.
-stats attribute:
+``user_data`` attribute:
- Raw memory allocation statistics (dict).
+ Optional list of user data, result of *user_data_callback* in
+ ``Snapshot.create()`` (default: None).
-timestamp attribute:
+``pid`` attribute:
- Date and time of the creation of the snapshot (str).
+ Identifier of the process which created the snapshot (int).
+
+``stats`` attribute:
+
+ Raw memory allocation statistics (dict).
+
+``timestamp`` attribute:
+
+ Date and time of the creation of the snapshot (str).
TakeSnapshot class
------------------
-TakeSnapshot class:
+``TakeSnapshot`` class:
- Task taking snapshots of Python memory allocations: write them into files.
+ Task taking snapshots of Python memory allocations: write them into files.
-start(delay: int) method:
+``start(delay: int)`` method:
- Start a task taking a snapshot every delay seconds.
+ Start a task taking a snapshot every delay seconds.
-stop() method:
+``stop()`` method:
- Stop the task started by the ``TakeSnapshot.start()`` method.
+ Stop the task started by the ``TakeSnapshot.start()`` method.
-take_snapshot() method:
+``take_snapshot()`` method:
- Take a snapshot.
+ Take a snapshot.
-filename_template attribute:
+``filename_template`` attribute:
- Template (str) to create a filename. "Variables" can be used in the
- template:
+ Template (str) to create a filename. "Variables" can be used in the
+ template:
- * ``$pid``: identifier of the current process
- * ``$timestamp``: current date and time
- * ``$counter``: counter starting at 1 and incremented at each snapshot
+ * ``$pid``: identifier of the current process
+ * ``$timestamp``: current date and time
+ * ``$counter``: counter starting at 1 and incremented at each snapshot
-user_data_callback attribute:
+``user_data_callback`` attribute:
- Optional callback collecting user data (callable, default: None).
- See ``Snapshot.create()``.
+ Optional callback collecting user data (callable, default: None).
+ See ``Snapshot.create()``.
Links
--
Repository URL: http://hg.python.org/peps
More information about the Python-checkins
mailing list