2016-10-30 09:46:26 +00:00
|
|
|
# SOME DESCRIPTIVE TITLE.
|
|
|
|
# Copyright (C) 2001-2016, Python Software Foundation
|
|
|
|
# This file is distributed under the same license as the Python package.
|
|
|
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
|
|
#
|
|
|
|
#, fuzzy
|
|
|
|
msgid ""
|
|
|
|
msgstr ""
|
|
|
|
"Project-Id-Version: Python 3.6\n"
|
|
|
|
"Report-Msgid-Bugs-To: \n"
|
2018-06-28 13:32:56 +00:00
|
|
|
"POT-Creation-Date: 2018-06-28 15:29+0200\n"
|
2016-10-30 09:46:26 +00:00
|
|
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
|
|
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
|
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
2017-05-23 22:40:56 +00:00
|
|
|
"Language: fr\n"
|
2016-10-30 09:46:26 +00:00
|
|
|
"MIME-Version: 1.0\n"
|
|
|
|
"Content-Type: text/plain; charset=UTF-8\n"
|
|
|
|
"Content-Transfer-Encoding: 8bit\n"
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:5
|
|
|
|
msgid "The Python Profilers"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:7
|
|
|
|
msgid "**Source code:** :source:`Lib/profile.py` and :source:`Lib/pstats.py`"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:14
|
|
|
|
msgid "Introduction to the profilers"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:20
|
|
|
|
msgid ""
|
|
|
|
":mod:`cProfile` and :mod:`profile` provide :dfn:`deterministic profiling` of "
|
|
|
|
"Python programs. A :dfn:`profile` is a set of statistics that describes how "
|
|
|
|
"often and for how long various parts of the program executed. These "
|
|
|
|
"statistics can be formatted into reports via the :mod:`pstats` module."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:25
|
|
|
|
msgid ""
|
|
|
|
"The Python standard library provides two different implementations of the "
|
|
|
|
"same profiling interface:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:28
|
|
|
|
msgid ""
|
|
|
|
":mod:`cProfile` is recommended for most users; it's a C extension with "
|
|
|
|
"reasonable overhead that makes it suitable for profiling long-running "
|
|
|
|
"programs. Based on :mod:`lsprof`, contributed by Brett Rosen and Ted "
|
|
|
|
"Czotter."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:33
|
|
|
|
msgid ""
|
|
|
|
":mod:`profile`, a pure Python module whose interface is imitated by :mod:"
|
|
|
|
"`cProfile`, but which adds significant overhead to profiled programs. If "
|
|
|
|
"you're trying to extend the profiler in some way, the task might be easier "
|
|
|
|
"with this module. Originally designed and written by Jim Roskind."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:40
|
|
|
|
msgid ""
|
|
|
|
"The profiler modules are designed to provide an execution profile for a "
|
|
|
|
"given program, not for benchmarking purposes (for that, there is :mod:"
|
|
|
|
"`timeit` for reasonably accurate results). This particularly applies to "
|
|
|
|
"benchmarking Python code against C code: the profilers introduce overhead "
|
|
|
|
"for Python code, but not for C-level functions, and so the C code would seem "
|
|
|
|
"faster than any Python one."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:51
|
|
|
|
msgid "Instant User's Manual"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:53
|
|
|
|
msgid ""
|
|
|
|
"This section is provided for users that \"don't want to read the manual.\" "
|
|
|
|
"It provides a very brief overview, and allows a user to rapidly perform "
|
|
|
|
"profiling on an existing application."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:57
|
|
|
|
msgid "To profile a function that takes a single argument, you can do::"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:63
|
|
|
|
msgid ""
|
|
|
|
"(Use :mod:`profile` instead of :mod:`cProfile` if the latter is not "
|
|
|
|
"available on your system.)"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:66
|
|
|
|
msgid ""
|
|
|
|
"The above action would run :func:`re.compile` and print profile results like "
|
|
|
|
"the following::"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:82
|
|
|
|
msgid ""
|
|
|
|
"The first line indicates that 197 calls were monitored. Of those calls, 192 "
|
|
|
|
"were :dfn:`primitive`, meaning that the call was not induced via recursion. "
|
|
|
|
"The next line: ``Ordered by: standard name``, indicates that the text string "
|
|
|
|
"in the far right column was used to sort the output. The column headings "
|
|
|
|
"include:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:88
|
|
|
|
msgid "ncalls"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:88
|
2017-04-02 20:14:06 +00:00
|
|
|
msgid "for the number of calls."
|
2016-10-30 09:46:26 +00:00
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:92
|
|
|
|
msgid "tottime"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:91
|
|
|
|
msgid ""
|
|
|
|
"for the total time spent in the given function (and excluding time made in "
|
|
|
|
"calls to sub-functions)"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:95 ../Doc/library/profile.rst:102
|
|
|
|
msgid "percall"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:95
|
|
|
|
msgid "is the quotient of ``tottime`` divided by ``ncalls``"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:99
|
|
|
|
msgid "cumtime"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:98
|
|
|
|
msgid ""
|
|
|
|
"is the cumulative time spent in this and all subfunctions (from invocation "
|
|
|
|
"till exit). This figure is accurate *even* for recursive functions."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:102
|
|
|
|
msgid "is the quotient of ``cumtime`` divided by primitive calls"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:105
|
|
|
|
msgid "filename:lineno(function)"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:105
|
|
|
|
msgid "provides the respective data of each function"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:107
|
|
|
|
msgid ""
|
|
|
|
"When there are two numbers in the first column (for example ``3/1``), it "
|
|
|
|
"means that the function recursed. The second value is the number of "
|
|
|
|
"primitive calls and the former is the total number of calls. Note that when "
|
|
|
|
"the function does not recurse, these two values are the same, and only the "
|
|
|
|
"single figure is printed."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:113
|
|
|
|
msgid ""
|
|
|
|
"Instead of printing the output at the end of the profile run, you can save "
|
|
|
|
"the results to a file by specifying a filename to the :func:`run` function::"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:120
|
|
|
|
msgid ""
|
|
|
|
"The :class:`pstats.Stats` class reads profile results from a file and "
|
|
|
|
"formats them in various ways."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:123
|
|
|
|
msgid ""
|
|
|
|
"The file :mod:`cProfile` can also be invoked as a script to profile another "
|
|
|
|
"script. For example::"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:128
|
|
|
|
msgid "``-o`` writes the profile results to a file instead of to stdout"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:130
|
|
|
|
msgid ""
|
|
|
|
"``-s`` specifies one of the :func:`~pstats.Stats.sort_stats` sort values to "
|
|
|
|
"sort the output by. This only applies when ``-o`` is not supplied."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:133
|
2018-06-28 13:32:56 +00:00
|
|
|
msgid "``-m`` specifies that a module is being profiled instead of a script."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:135
|
|
|
|
msgid "Added the ``-m`` option."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:138
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"The :mod:`pstats` module's :class:`~pstats.Stats` class has a variety of "
|
|
|
|
"methods for manipulating and printing the data saved into a profile results "
|
|
|
|
"file::"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:146
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"The :meth:`~pstats.Stats.strip_dirs` method removed the extraneous path from "
|
|
|
|
"all the module names. The :meth:`~pstats.Stats.sort_stats` method sorted all "
|
|
|
|
"the entries according to the standard module/line/name string that is "
|
|
|
|
"printed. The :meth:`~pstats.Stats.print_stats` method printed out all the "
|
|
|
|
"statistics. You might try the following sort calls::"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:155
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"The first call will actually sort the list by function name, and the second "
|
|
|
|
"call will print out the statistics. The following are some interesting "
|
|
|
|
"calls to experiment with::"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:161
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"This sorts the profile by cumulative time in a function, and then only "
|
|
|
|
"prints the ten most significant lines. If you want to understand what "
|
|
|
|
"algorithms are taking time, the above line is what you would use."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:165
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"If you were looking to see what functions were looping a lot, and taking a "
|
|
|
|
"lot of time, you would do::"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:170
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"to sort according to time spent within each function, and then print the "
|
|
|
|
"statistics for the top ten functions."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:173
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "You might also try::"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:177
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"This will sort all the statistics by file name, and then print out "
|
|
|
|
"statistics for only the class init methods (since they are spelled with "
|
|
|
|
"``__init__`` in them). As one final example, you could try::"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:183
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"This line sorts statistics with a primary key of time, and a secondary key "
|
|
|
|
"of cumulative time, and then prints out some of the statistics. To be "
|
|
|
|
"specific, the list is first culled down to 50% (re: ``.5``) of its original "
|
|
|
|
"size, then only lines containing ``init`` are maintained, and that sub-sub-"
|
|
|
|
"list is printed."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:188
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"If you wondered what functions called the above functions, you could now "
|
|
|
|
"(``p`` is still sorted according to the last criteria) do::"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:193
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "and you would get a list of callers for each of the listed functions."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:195
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"If you want more functionality, you're going to have to read the manual, or "
|
|
|
|
"guess what the following functions do::"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:201
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"Invoked as a script, the :mod:`pstats` module is a statistics browser for "
|
|
|
|
"reading and examining profile dumps. It has a simple line-oriented "
|
|
|
|
"interface (implemented using :mod:`cmd`) and interactive help."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:206
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ":mod:`profile` and :mod:`cProfile` Module Reference"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:212
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"Both the :mod:`profile` and :mod:`cProfile` modules provide the following "
|
|
|
|
"functions:"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:217
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"This function takes a single argument that can be passed to the :func:`exec` "
|
|
|
|
"function, and an optional file name. In all cases this routine executes::"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:222
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"and gathers profiling statistics from the execution. If no file name is "
|
|
|
|
"present, then this function automatically creates a :class:`~pstats.Stats` "
|
|
|
|
"instance and prints a simple profiling report. If the sort value is "
|
2017-05-27 17:46:38 +00:00
|
|
|
"specified, it is passed to this :class:`~pstats.Stats` instance to control "
|
2016-10-30 09:46:26 +00:00
|
|
|
"how the results are sorted."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:230
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"This function is similar to :func:`run`, with added arguments to supply the "
|
|
|
|
"globals and locals dictionaries for the *command* string. This routine "
|
|
|
|
"executes::"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:236
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "and gathers profiling statistics as in the :func:`run` function above."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:240
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"This class is normally only used if more precise control over profiling is "
|
|
|
|
"needed than what the :func:`cProfile.run` function provides."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:243
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"A custom timer can be supplied for measuring how long code takes to run via "
|
|
|
|
"the *timer* argument. This must be a function that returns a single number "
|
|
|
|
"representing the current time. If the number is an integer, the *timeunit* "
|
|
|
|
"specifies a multiplier that specifies the duration of each unit of time. For "
|
|
|
|
"example, if the timer returns times measured in thousands of seconds, the "
|
|
|
|
"time unit would be ``.001``."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:250
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"Directly using the :class:`Profile` class allows formatting profile results "
|
|
|
|
"without writing the profile data to a file::"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:267
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "Start collecting profiling data."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:271
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "Stop collecting profiling data."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:275
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"Stop collecting profiling data and record the results internally as the "
|
|
|
|
"current profile."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:280
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"Create a :class:`~pstats.Stats` object based on the current profile and "
|
|
|
|
"print the results to stdout."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:285
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "Write the results of the current profile to *filename*."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:289
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "Profile the cmd via :func:`exec`."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:293
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"Profile the cmd via :func:`exec` with the specified global and local "
|
|
|
|
"environment."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:298
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "Profile ``func(*args, **kwargs)``"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:303
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "The :class:`Stats` Class"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:305
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"Analysis of the profiler data is done using the :class:`~pstats.Stats` class."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:312
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"This class constructor creates an instance of a \"statistics object\" from a "
|
|
|
|
"*filename* (or list of filenames) or from a :class:`Profile` instance. "
|
|
|
|
"Output will be printed to the stream specified by *stream*."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:316
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"The file selected by the above constructor must have been created by the "
|
|
|
|
"corresponding version of :mod:`profile` or :mod:`cProfile`. To be specific, "
|
|
|
|
"there is *no* file compatibility guaranteed with future versions of this "
|
|
|
|
"profiler, and there is no compatibility with files produced by other "
|
2018-06-10 09:32:30 +00:00
|
|
|
"profilers, or the same profiler run on a different operating system. If "
|
|
|
|
"several files are provided, all the statistics for identical functions will "
|
|
|
|
"be coalesced, so that an overall view of several processes can be considered "
|
|
|
|
"in a single report. If additional files need to be combined with data in an "
|
|
|
|
"existing :class:`~pstats.Stats` object, the :meth:`~pstats.Stats.add` method "
|
|
|
|
"can be used."
|
2016-10-30 09:46:26 +00:00
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:327
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"Instead of reading the profile data from a file, a :class:`cProfile.Profile` "
|
|
|
|
"or :class:`profile.Profile` object can be used as the profile data source."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:330
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ":class:`Stats` objects have the following methods:"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:334
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"This method for the :class:`Stats` class removes all leading path "
|
|
|
|
"information from file names. It is very useful in reducing the size of the "
|
|
|
|
"printout to fit within (close to) 80 columns. This method modifies the "
|
|
|
|
"object, and the stripped information is lost. After performing a strip "
|
|
|
|
"operation, the object is considered to have its entries in a \"random\" "
|
|
|
|
"order, as it was just after object initialization and loading. If :meth:"
|
|
|
|
"`~pstats.Stats.strip_dirs` causes two function names to be indistinguishable "
|
|
|
|
"(they are on the same line of the same filename, and have the same function "
|
|
|
|
"name), then the statistics for these two entries are accumulated into a "
|
|
|
|
"single entry."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:348
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"This method of the :class:`Stats` class accumulates additional profiling "
|
|
|
|
"information into the current profiling object. Its arguments should refer "
|
|
|
|
"to filenames created by the corresponding version of :func:`profile.run` or :"
|
|
|
|
"func:`cProfile.run`. Statistics for identically named (re: file, line, name) "
|
|
|
|
"functions are automatically accumulated into single function statistics."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:358
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"Save the data loaded into the :class:`Stats` object to a file named "
|
|
|
|
"*filename*. The file is created if it does not exist, and is overwritten if "
|
|
|
|
"it already exists. This is equivalent to the method of the same name on "
|
|
|
|
"the :class:`profile.Profile` and :class:`cProfile.Profile` classes."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:366
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"This method modifies the :class:`Stats` object by sorting it according to "
|
2018-06-28 13:32:56 +00:00
|
|
|
"the supplied criteria. The argument can be either a string or a SortKey "
|
|
|
|
"enum identifying the basis of a sort (example: ``'time'``, ``'name'``, "
|
|
|
|
"``SortKey.TIME`` or ``SortKey.NAME``). The SortKey enums argument have "
|
|
|
|
"advantage over the string argument in that it is more robust and less error "
|
|
|
|
"prone."
|
2016-10-30 09:46:26 +00:00
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:373
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"When more than one key is provided, then additional keys are used as "
|
|
|
|
"secondary criteria when there is equality in all keys selected before them. "
|
2018-06-28 13:32:56 +00:00
|
|
|
"For example, ``sort_stats(SortKey.NAME, SortKey.FILE)`` will sort all the "
|
|
|
|
"entries according to their function name, and resolve all ties (identical "
|
|
|
|
"function names) by sorting by file name."
|
2016-10-30 09:46:26 +00:00
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:379
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
2018-06-28 13:32:56 +00:00
|
|
|
"For the string argument, abbreviations can be used for any key names, as "
|
|
|
|
"long as the abbreviation is unambiguous."
|
2016-10-30 09:46:26 +00:00
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:382
|
|
|
|
msgid "The following are the valid string and SortKey:"
|
2016-10-30 09:46:26 +00:00
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:385
|
|
|
|
msgid "Valid String Arg"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:385
|
|
|
|
msgid "Valid enum Arg"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:385
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "Meaning"
|
|
|
|
msgstr "Signification"
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:387
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "``'calls'``"
|
|
|
|
msgstr "``'calls'``"
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:387
|
|
|
|
msgid "SortKey.CALLS"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:387 ../Doc/library/profile.rst:399
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "call count"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:389
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "``'cumulative'``"
|
|
|
|
msgstr "``'cumulative'``"
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:389
|
|
|
|
msgid "SortKey.CUMULATIVE"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:389 ../Doc/library/profile.rst:391
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "cumulative time"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:391
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "``'cumtime'``"
|
|
|
|
msgstr "``'cumtime'``"
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:391 ../Doc/library/profile.rst:393
|
|
|
|
#: ../Doc/library/profile.rst:397 ../Doc/library/profile.rst:399
|
|
|
|
#: ../Doc/library/profile.rst:413
|
|
|
|
msgid "N/A"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:393
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "``'file'``"
|
|
|
|
msgstr "``'file'``"
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:393 ../Doc/library/profile.rst:395
|
|
|
|
#: ../Doc/library/profile.rst:397
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "file name"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:395
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "``'filename'``"
|
|
|
|
msgstr "``'filename'``"
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:395
|
|
|
|
msgid "SortKey.FILENAME"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:397
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "``'module'``"
|
|
|
|
msgstr "``'module'``"
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:399
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "``'ncalls'``"
|
|
|
|
msgstr "``'ncalls'``"
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:401
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "``'pcalls'``"
|
|
|
|
msgstr "``'pcalls'``"
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:401
|
|
|
|
msgid "SortKey.PCALLS"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:401
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "primitive call count"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:403
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "``'line'``"
|
|
|
|
msgstr "``'line'``"
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:403
|
|
|
|
msgid "SortKey.LINE"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:403
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "line number"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:405
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "``'name'``"
|
|
|
|
msgstr "``'name'``"
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:405
|
|
|
|
msgid "SortKey.NAME"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:405
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "function name"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:407
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "``'nfl'``"
|
|
|
|
msgstr "``'nfl'``"
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:407
|
|
|
|
msgid "SortKey.NFL"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:407
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "name/file/line"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:409
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "``'stdname'``"
|
|
|
|
msgstr "``'stdname'``"
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:409
|
|
|
|
msgid "SortKey.STDNAME"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:409
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "standard name"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:411
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "``'time'``"
|
|
|
|
msgstr "``'time'``"
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:411
|
|
|
|
msgid "SortKey.TIME"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:411 ../Doc/library/profile.rst:413
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "internal time"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:413
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "``'tottime'``"
|
|
|
|
msgstr "``'tottime'``"
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:416
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"Note that all sorts on statistics are in descending order (placing most time "
|
|
|
|
"consuming items first), where as name, file, and line number searches are in "
|
2018-06-28 13:32:56 +00:00
|
|
|
"ascending order (alphabetical). The subtle distinction between ``SortKey."
|
|
|
|
"NFL`` and ``SortKey.STDNAME`` is that the standard name is a sort of the "
|
|
|
|
"name as printed, which means that the embedded line numbers get compared in "
|
|
|
|
"an odd way. For example, lines 3, 20, and 40 would (if the file names were "
|
|
|
|
"the same) appear in the string order 20, 3 and 40. In contrast, ``SortKey."
|
|
|
|
"NFL`` does a numeric compare of the line numbers. In fact, "
|
|
|
|
"``sort_stats(SortKey.NFL)`` is the same as ``sort_stats(SortKey.NAME, "
|
|
|
|
"SortKey.FILENAME, SortKey.LINE)``."
|
2016-10-30 09:46:26 +00:00
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:427
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"For backward-compatibility reasons, the numeric arguments ``-1``, ``0``, "
|
|
|
|
"``1``, and ``2`` are permitted. They are interpreted as ``'stdname'``, "
|
|
|
|
"``'calls'``, ``'time'``, and ``'cumulative'`` respectively. If this old "
|
|
|
|
"style format (numeric) is used, only one sort key (the numeric key) will be "
|
|
|
|
"used, and additional arguments will be silently ignored."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:435
|
|
|
|
msgid "Added the SortKey enum."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/profile.rst:440
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"This method for the :class:`Stats` class reverses the ordering of the basic "
|
|
|
|
"list within the object. Note that by default ascending vs descending order "
|
|
|
|
"is properly selected based on the sort key of choice."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:450
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"This method for the :class:`Stats` class prints out a report as described in "
|
|
|
|
"the :func:`profile.run` definition."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:453
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"The order of the printing is based on the last :meth:`~pstats.Stats."
|
|
|
|
"sort_stats` operation done on the object (subject to caveats in :meth:"
|
|
|
|
"`~pstats.Stats.add` and :meth:`~pstats.Stats.strip_dirs`)."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:458
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"The arguments provided (if any) can be used to limit the list down to the "
|
|
|
|
"significant entries. Initially, the list is taken to be the complete set of "
|
|
|
|
"profiled functions. Each restriction is either an integer (to select a "
|
|
|
|
"count of lines), or a decimal fraction between 0.0 and 1.0 inclusive (to "
|
2017-04-02 20:14:06 +00:00
|
|
|
"select a percentage of lines), or a string that will interpreted as a "
|
|
|
|
"regular expression (to pattern match the standard name that is printed). If "
|
|
|
|
"several restrictions are provided, then they are applied sequentially. For "
|
|
|
|
"example::"
|
2016-10-30 09:46:26 +00:00
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:469
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"would first limit the printing to first 10% of list, and then only print "
|
|
|
|
"functions that were part of filename :file:`.\\*foo:`. In contrast, the "
|
|
|
|
"command::"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:475
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"would limit the list to all functions having file names :file:`.\\*foo:`, "
|
|
|
|
"and then proceed to only print the first 10% of them."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:481
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"This method for the :class:`Stats` class prints a list of all functions that "
|
|
|
|
"called each function in the profiled database. The ordering is identical to "
|
|
|
|
"that provided by :meth:`~pstats.Stats.print_stats`, and the definition of "
|
|
|
|
"the restricting argument is also identical. Each caller is reported on its "
|
|
|
|
"own line. The format differs slightly depending on the profiler that "
|
|
|
|
"produced the stats:"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:488
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"With :mod:`profile`, a number is shown in parentheses after each caller to "
|
|
|
|
"show how many times this specific call was made. For convenience, a second "
|
|
|
|
"non-parenthesized number repeats the cumulative time spent in the function "
|
|
|
|
"at the right."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:493
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"With :mod:`cProfile`, each caller is preceded by three numbers: the number "
|
|
|
|
"of times this specific call was made, and the total and cumulative times "
|
|
|
|
"spent in the current function while it was invoked by this specific caller."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:501
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"This method for the :class:`Stats` class prints a list of all function that "
|
|
|
|
"were called by the indicated function. Aside from this reversal of "
|
|
|
|
"direction of calls (re: called vs was called by), the arguments and ordering "
|
|
|
|
"are identical to the :meth:`~pstats.Stats.print_callers` method."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:510
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "What Is Deterministic Profiling?"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:512
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
":dfn:`Deterministic profiling` is meant to reflect the fact that all "
|
|
|
|
"*function call*, *function return*, and *exception* events are monitored, "
|
|
|
|
"and precise timings are made for the intervals between these events (during "
|
|
|
|
"which time the user's code is executing). In contrast, :dfn:`statistical "
|
|
|
|
"profiling` (which is not done by this module) randomly samples the effective "
|
|
|
|
"instruction pointer, and deduces where time is being spent. The latter "
|
|
|
|
"technique traditionally involves less overhead (as the code does not need to "
|
|
|
|
"be instrumented), but provides only relative indications of where time is "
|
|
|
|
"being spent."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:521
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"In Python, since there is an interpreter active during execution, the "
|
|
|
|
"presence of instrumented code is not required to do deterministic "
|
|
|
|
"profiling. Python automatically provides a :dfn:`hook` (optional callback) "
|
|
|
|
"for each event. In addition, the interpreted nature of Python tends to add "
|
|
|
|
"so much overhead to execution, that deterministic profiling tends to only "
|
|
|
|
"add small processing overhead in typical applications. The result is that "
|
|
|
|
"deterministic profiling is not that expensive, yet provides extensive run "
|
|
|
|
"time statistics about the execution of a Python program."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:530
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"Call count statistics can be used to identify bugs in code (surprising "
|
|
|
|
"counts), and to identify possible inline-expansion points (high call "
|
|
|
|
"counts). Internal time statistics can be used to identify \"hot loops\" "
|
|
|
|
"that should be carefully optimized. Cumulative time statistics should be "
|
|
|
|
"used to identify high level errors in the selection of algorithms. Note "
|
|
|
|
"that the unusual handling of cumulative times in this profiler allows "
|
|
|
|
"statistics for recursive implementations of algorithms to be directly "
|
|
|
|
"compared to iterative implementations."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:543
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "Limitations"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:545
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"One limitation has to do with accuracy of timing information. There is a "
|
|
|
|
"fundamental problem with deterministic profilers involving accuracy. The "
|
|
|
|
"most obvious restriction is that the underlying \"clock\" is only ticking at "
|
|
|
|
"a rate (typically) of about .001 seconds. Hence no measurements will be "
|
|
|
|
"more accurate than the underlying clock. If enough measurements are taken, "
|
|
|
|
"then the \"error\" will tend to average out. Unfortunately, removing this "
|
|
|
|
"first error induces a second source of error."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:553
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"The second problem is that it \"takes a while\" from when an event is "
|
|
|
|
"dispatched until the profiler's call to get the time actually *gets* the "
|
|
|
|
"state of the clock. Similarly, there is a certain lag when exiting the "
|
|
|
|
"profiler event handler from the time that the clock's value was obtained "
|
|
|
|
"(and then squirreled away), until the user's code is once again executing. "
|
|
|
|
"As a result, functions that are called many times, or call many functions, "
|
|
|
|
"will typically accumulate this error. The error that accumulates in this "
|
|
|
|
"fashion is typically less than the accuracy of the clock (less than one "
|
|
|
|
"clock tick), but it *can* accumulate and become very significant."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:563
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"The problem is more important with :mod:`profile` than with the lower-"
|
|
|
|
"overhead :mod:`cProfile`. For this reason, :mod:`profile` provides a means "
|
|
|
|
"of calibrating itself for a given platform so that this error can be "
|
|
|
|
"probabilistically (on the average) removed. After the profiler is "
|
|
|
|
"calibrated, it will be more accurate (in a least square sense), but it will "
|
|
|
|
"sometimes produce negative numbers (when call counts are exceptionally low, "
|
|
|
|
"and the gods of probability work against you :-). ) Do *not* be alarmed by "
|
|
|
|
"negative numbers in the profile. They should *only* appear if you have "
|
|
|
|
"calibrated your profiler, and the results are actually better than without "
|
|
|
|
"calibration."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:577
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "Calibration"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:579
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"The profiler of the :mod:`profile` module subtracts a constant from each "
|
|
|
|
"event handling time to compensate for the overhead of calling the time "
|
|
|
|
"function, and socking away the results. By default, the constant is 0. The "
|
|
|
|
"following procedure can be used to obtain a better constant for a given "
|
|
|
|
"platform (see :ref:`profile-limitations`). ::"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:590
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"The method executes the number of Python calls given by the argument, "
|
|
|
|
"directly and again under the profiler, measuring the time for both. It then "
|
|
|
|
"computes the hidden overhead per profiler event, and returns that as a "
|
|
|
|
"float. For example, on a 1.8Ghz Intel Core i5 running Mac OS X, and using "
|
2018-06-28 13:32:56 +00:00
|
|
|
"Python's time.process_time() as the timer, the magical number is about "
|
|
|
|
"4.04e-6."
|
2016-10-30 09:46:26 +00:00
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:596
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"The object of this exercise is to get a fairly consistent result. If your "
|
|
|
|
"computer is *very* fast, or your timer function has poor resolution, you "
|
|
|
|
"might have to pass 100000, or even 1000000, to get consistent results."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:600
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"When you have a consistent answer, there are three ways you can use it::"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:614
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"If you have a choice, you are better off choosing a smaller constant, and "
|
|
|
|
"then your results will \"less often\" show up as negative in profile "
|
|
|
|
"statistics."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:620
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid "Using a custom timer"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:622
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"If you want to change how current time is determined (for example, to force "
|
|
|
|
"use of wall-clock time or elapsed process time), pass the timing function "
|
|
|
|
"you want to the :class:`Profile` class constructor::"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:628
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"The resulting profiler will then call ``your_time_func``. Depending on "
|
|
|
|
"whether you are using :class:`profile.Profile` or :class:`cProfile.Profile`, "
|
|
|
|
"``your_time_func``'s return value will be interpreted differently:"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:646
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ":class:`profile.Profile`"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:633
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"``your_time_func`` should return a single number, or a list of numbers whose "
|
|
|
|
"sum is the current time (like what :func:`os.times` returns). If the "
|
|
|
|
"function returns a single time number, or the list of returned numbers has "
|
|
|
|
"length 2, then you will get an especially fast version of the dispatch "
|
|
|
|
"routine."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:639
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"Be warned that you should calibrate the profiler class for the timer "
|
|
|
|
"function that you choose (see :ref:`profile-calibration`). For most "
|
|
|
|
"machines, a timer that returns a lone integer value will provide the best "
|
|
|
|
"results in terms of low overhead during profiling. (:func:`os.times` is "
|
|
|
|
"*pretty* bad, as it returns a tuple of floating point values). If you want "
|
|
|
|
"to substitute a better timer in the cleanest fashion, derive a class and "
|
|
|
|
"hardwire a replacement dispatch method that best handles your timer call, "
|
|
|
|
"along with the appropriate calibration constant."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:660
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ":class:`cProfile.Profile`"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:649
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"``your_time_func`` should return a single number. If it returns integers, "
|
|
|
|
"you can also invoke the class constructor with a second argument specifying "
|
|
|
|
"the real duration of one unit of time. For example, if "
|
|
|
|
"``your_integer_time_func`` returns times measured in thousands of seconds, "
|
|
|
|
"you would construct the :class:`Profile` instance as follows::"
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:657
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"As the :class:`cProfile.Profile` class cannot be calibrated, custom timer "
|
|
|
|
"functions should be used with care and should be as fast as possible. For "
|
|
|
|
"the best results with a custom timer, it might be necessary to hard-code it "
|
|
|
|
"in the C source of the internal :mod:`_lsprof` module."
|
|
|
|
msgstr ""
|
|
|
|
|
2018-06-28 13:32:56 +00:00
|
|
|
#: ../Doc/library/profile.rst:662
|
2016-10-30 09:46:26 +00:00
|
|
|
msgid ""
|
|
|
|
"Python 3.3 adds several new functions in :mod:`time` that can be used to "
|
|
|
|
"make precise measurements of process or wall-clock time. For example, see :"
|
|
|
|
"func:`time.perf_counter`."
|
|
|
|
msgstr ""
|