pyperf 2.9.0__tar.gz → 2.10.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyperf-2.9.0/pyperf.egg-info → pyperf-2.10.0}/PKG-INFO +8 -3
- {pyperf-2.9.0 → pyperf-2.10.0}/README.rst +5 -1
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/changelog.rst +10 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/conf.py +1 -1
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/run_benchmark.rst +1 -1
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/runner.rst +1 -1
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/__init__.py +1 -1
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/_cpu_utils.py +5 -13
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/_psutil_memory.py +7 -2
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/_runner.py +9 -6
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/_utils.py +7 -16
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/_worker.py +5 -4
- {pyperf-2.9.0 → pyperf-2.10.0/pyperf.egg-info}/PKG-INFO +8 -3
- {pyperf-2.9.0 → pyperf-2.10.0}/pyproject.toml +1 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/COPYING +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/MANIFEST.in +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/TODO.rst +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/Makefile +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/analyze.rst +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/api.rst +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/cli.rst +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/developer_guide.rst +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/examples/bench_async_func.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/examples/bench_async_func_with_loop_factory.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/examples/bench_command.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/examples/bench_func.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/examples/bench_time_func.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/examples/bench_timeit.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/examples/export_csv.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/examples/hist_scipy.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/examples/plot.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/examples.rst +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/hist_scipy_telco.png +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/index.rst +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/make.bat +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/outliers.json.gz +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/py2.json.gz +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/py3.json.gz +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/system.rst +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/timeit_strip.json.gz +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/doc/user_guide.rst +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/__main__.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/_bench.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/_cli.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/_collect_metadata.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/_command.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/_compare.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/_formatter.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/_hooks.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/_linux_memory.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/_manager.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/_metadata.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/_process_time.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/_system.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/_timeit.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/_timeit_cli.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/_win_memory.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/tests/__init__.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/tests/mult_list_bench.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/tests/mult_list_py36.json +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/tests/mult_list_py36_tags.json +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/tests/mult_list_py37.json +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/tests/mult_list_py37_tags.json +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/tests/mult_list_py38.json +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/tests/replay.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/tests/telco.json +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/tests/test_bench.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/tests/test_cli.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/tests/test_examples.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/tests/test_metadata.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/tests/test_misc.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/tests/test_perf_cli.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/tests/test_runner.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/tests/test_system.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/tests/test_timeit.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/tests/test_utils.py +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf/tests/track_memory.json +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf.egg-info/SOURCES.txt +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf.egg-info/dependency_links.txt +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf.egg-info/entry_points.txt +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf.egg-info/requires.txt +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/pyperf.egg-info/top_level.txt +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/setup.cfg +0 -0
- {pyperf-2.9.0 → pyperf-2.10.0}/tox.ini +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: pyperf
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.10.0
|
|
4
4
|
Summary: Python module to run and analyze benchmarks
|
|
5
5
|
Author-email: Victor Stinner <vstinner@redhat.com>
|
|
6
6
|
Maintainer-email: Dong-hee Na <donghee.na@python.org>
|
|
@@ -19,6 +19,7 @@ License-File: COPYING
|
|
|
19
19
|
Requires-Dist: psutil>=5.9.0
|
|
20
20
|
Provides-Extra: dev
|
|
21
21
|
Requires-Dist: tox; extra == "dev"
|
|
22
|
+
Dynamic: license-file
|
|
22
23
|
|
|
23
24
|
******
|
|
24
25
|
pyperf
|
|
@@ -28,6 +29,10 @@ pyperf
|
|
|
28
29
|
:alt: Latest release on the Python Cheeseshop (PyPI)
|
|
29
30
|
:target: https://pypi.python.org/pypi/pyperf
|
|
30
31
|
|
|
32
|
+
.. image:: https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2Fpsf%2Fpyperf%2Frefs%2Fheads%2Fmain%2Fpyproject.toml
|
|
33
|
+
:alt: Supported Python versions
|
|
34
|
+
:target: https://pypi.python.org/pypi/pyperf
|
|
35
|
+
|
|
31
36
|
.. image:: https://github.com/psf/pyperf/actions/workflows/build.yml/badge.svg
|
|
32
37
|
:alt: Build status of pyperf on GitHub Actions
|
|
33
38
|
:target: https://github.com/psf/pyperf/actions
|
|
@@ -150,7 +155,7 @@ Command to install pyperf on Python 3::
|
|
|
150
155
|
|
|
151
156
|
python3 -m pip install pyperf
|
|
152
157
|
|
|
153
|
-
pyperf requires Python 3.
|
|
158
|
+
pyperf requires Python 3.9 or newer.
|
|
154
159
|
|
|
155
160
|
Python 2.7 users can use pyperf 1.7.1 which is the last version compatible with
|
|
156
161
|
Python 2.7.
|
|
@@ -6,6 +6,10 @@ pyperf
|
|
|
6
6
|
:alt: Latest release on the Python Cheeseshop (PyPI)
|
|
7
7
|
:target: https://pypi.python.org/pypi/pyperf
|
|
8
8
|
|
|
9
|
+
.. image:: https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2Fpsf%2Fpyperf%2Frefs%2Fheads%2Fmain%2Fpyproject.toml
|
|
10
|
+
:alt: Supported Python versions
|
|
11
|
+
:target: https://pypi.python.org/pypi/pyperf
|
|
12
|
+
|
|
9
13
|
.. image:: https://github.com/psf/pyperf/actions/workflows/build.yml/badge.svg
|
|
10
14
|
:alt: Build status of pyperf on GitHub Actions
|
|
11
15
|
:target: https://github.com/psf/pyperf/actions
|
|
@@ -128,7 +132,7 @@ Command to install pyperf on Python 3::
|
|
|
128
132
|
|
|
129
133
|
python3 -m pip install pyperf
|
|
130
134
|
|
|
131
|
-
pyperf requires Python 3.
|
|
135
|
+
pyperf requires Python 3.9 or newer.
|
|
132
136
|
|
|
133
137
|
Python 2.7 users can use pyperf 1.7.1 which is the last version compatible with
|
|
134
138
|
Python 2.7.
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
+
Version 2.10.0 (2026-02-07)
|
|
5
|
+
---------------------------
|
|
6
|
+
|
|
7
|
+
* Feature: JIT builds of CPython are now recognized as a JIT implementation by :func:`perf.python_has_jit`.
|
|
8
|
+
Patch by Ken Jin.
|
|
9
|
+
* Feature: Memory tracker now supports BSD.
|
|
10
|
+
Patch by Laurent Cheylus and Victor Stinner.
|
|
11
|
+
* Maintenance: ``pyperf`` now requires Python 3.9 or higher.
|
|
12
|
+
Patch by Alex Willmer.
|
|
13
|
+
|
|
4
14
|
Version 2.9.0 (2025-03-03)
|
|
5
15
|
--------------------------
|
|
6
16
|
|
|
@@ -50,7 +50,7 @@ author = 'Victor Stinner'
|
|
|
50
50
|
# built documents.
|
|
51
51
|
#
|
|
52
52
|
# The short X.Y version.
|
|
53
|
-
version = release = '2.
|
|
53
|
+
version = release = '2.10.0'
|
|
54
54
|
|
|
55
55
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
|
56
56
|
# for a list of supported languages.
|
|
@@ -23,7 +23,7 @@ Optional dependencies:
|
|
|
23
23
|
* Python module ``psutil``. Install: ``python3 -m pip install -U psutil``.
|
|
24
24
|
* When you are using macOS, you need to install ``psutil`` if you want to use ``--track-memory`` option.
|
|
25
25
|
|
|
26
|
-
pyperf requires Python 3.
|
|
26
|
+
pyperf requires Python 3.9 or newer.
|
|
27
27
|
|
|
28
28
|
Python 2.7 users can use pyperf 1.7.1 which is the last version compatible with
|
|
29
29
|
Python 2.7.
|
|
@@ -146,7 +146,7 @@ Option::
|
|
|
146
146
|
There is no time out by default.
|
|
147
147
|
* ``--tracemalloc``: Use the ``tracemalloc`` module to track Python memory
|
|
148
148
|
allocation and get the peak of memory usage in metadata
|
|
149
|
-
(``tracemalloc_peak``).
|
|
149
|
+
(``tracemalloc_peak``).
|
|
150
150
|
See the `tracemalloc module
|
|
151
151
|
<https://docs.python.org/dev/library/tracemalloc.html>`_.
|
|
152
152
|
* ``--track-memory``: get the memory peak usage. it is less accurate than
|
|
@@ -17,20 +17,10 @@ def get_logical_cpu_count():
|
|
|
17
17
|
if psutil is not None:
|
|
18
18
|
# Number of logical CPUs
|
|
19
19
|
cpu_count = psutil.cpu_count()
|
|
20
|
-
|
|
20
|
+
else:
|
|
21
21
|
# Python 3.4
|
|
22
|
+
# Python 3.13+: capped by -X cpu_count=n or $PYTHON_CPU_COUNT if set
|
|
22
23
|
cpu_count = os.cpu_count()
|
|
23
|
-
else:
|
|
24
|
-
cpu_count = None
|
|
25
|
-
try:
|
|
26
|
-
import multiprocessing
|
|
27
|
-
except ImportError:
|
|
28
|
-
pass
|
|
29
|
-
else:
|
|
30
|
-
try:
|
|
31
|
-
cpu_count = multiprocessing.cpu_count()
|
|
32
|
-
except NotImplementedError:
|
|
33
|
-
pass
|
|
34
24
|
|
|
35
25
|
if cpu_count is not None and cpu_count < 1:
|
|
36
26
|
return None
|
|
@@ -148,7 +138,7 @@ def get_isolated_cpus():
|
|
|
148
138
|
|
|
149
139
|
|
|
150
140
|
def set_cpu_affinity(cpus):
|
|
151
|
-
#
|
|
141
|
+
# Availability: some Unix platforms
|
|
152
142
|
if hasattr(os, 'sched_setaffinity'):
|
|
153
143
|
os.sched_setaffinity(0, cpus)
|
|
154
144
|
return True
|
|
@@ -161,6 +151,8 @@ def set_cpu_affinity(cpus):
|
|
|
161
151
|
except ImportError:
|
|
162
152
|
return
|
|
163
153
|
|
|
154
|
+
# Availability: Linux, Windows, FreeBSD (psutil 2.2.0+)
|
|
155
|
+
# https://psutil.rtfd.io/en/latest/index.html#psutil.Process.cpu_affinity
|
|
164
156
|
proc = psutil.Process()
|
|
165
157
|
if not hasattr(proc, 'cpu_affinity'):
|
|
166
158
|
return
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import os
|
|
2
2
|
try:
|
|
3
|
-
from pyperf._utils import USE_PSUTIL
|
|
3
|
+
from pyperf._utils import USE_PSUTIL, BSD
|
|
4
4
|
if not USE_PSUTIL:
|
|
5
5
|
raise ImportError
|
|
6
6
|
else:
|
|
@@ -21,7 +21,12 @@ class PeakMemoryUsageThread(threading.Thread):
|
|
|
21
21
|
self._quit = False
|
|
22
22
|
|
|
23
23
|
def get(self):
|
|
24
|
-
|
|
24
|
+
if BSD:
|
|
25
|
+
# USS (Unique Set Size) is not supported on BSD,
|
|
26
|
+
# use RSS (Resident Set Size) instead.
|
|
27
|
+
usage = self.process.memory_info().rss
|
|
28
|
+
else:
|
|
29
|
+
usage = self.process.memory_full_info().uss
|
|
25
30
|
self.peak_usage = max(self.peak_usage, usage)
|
|
26
31
|
|
|
27
32
|
def run(self):
|
|
@@ -12,9 +12,10 @@ from pyperf._cpu_utils import (format_cpu_list, parse_cpu_list,
|
|
|
12
12
|
set_highest_priority)
|
|
13
13
|
from pyperf._formatter import format_timedelta
|
|
14
14
|
from pyperf._hooks import get_hook_names
|
|
15
|
-
from pyperf._utils import (MS_WINDOWS,
|
|
15
|
+
from pyperf._utils import (MS_WINDOWS, abs_executable,
|
|
16
16
|
WritePipe, get_python_names,
|
|
17
17
|
merge_profile_stats)
|
|
18
|
+
from pyperf._system import OS_LINUX
|
|
18
19
|
from pyperf._worker import WorkerProcessTask
|
|
19
20
|
|
|
20
21
|
|
|
@@ -346,10 +347,10 @@ class Runner:
|
|
|
346
347
|
if args.track_memory:
|
|
347
348
|
if MS_WINDOWS:
|
|
348
349
|
from pyperf._win_memory import check_tracking_memory
|
|
349
|
-
elif
|
|
350
|
-
from pyperf._psutil_memory import check_tracking_memory
|
|
351
|
-
else:
|
|
350
|
+
elif OS_LINUX:
|
|
352
351
|
from pyperf._linux_memory import check_tracking_memory
|
|
352
|
+
else:
|
|
353
|
+
from pyperf._psutil_memory import check_tracking_memory
|
|
353
354
|
err_msg = check_tracking_memory()
|
|
354
355
|
if err_msg:
|
|
355
356
|
raise CLIError("unable to track the memory usage "
|
|
@@ -415,12 +416,14 @@ class Runner:
|
|
|
415
416
|
else:
|
|
416
417
|
if not isolated:
|
|
417
418
|
print("ERROR: CPU affinity not available.", file=sys.stderr)
|
|
418
|
-
print("
|
|
419
|
+
print("Install psutil dependency and check "
|
|
420
|
+
"psutil.Process.cpu_affinity is available on your OS.")
|
|
419
421
|
sys.exit(1)
|
|
420
422
|
elif not self.args.quiet:
|
|
421
423
|
print("WARNING: unable to pin worker processes to "
|
|
422
424
|
"isolated CPUs, CPU affinity not available")
|
|
423
|
-
print("
|
|
425
|
+
print("Install psutil dependency and check "
|
|
426
|
+
"psutil.Process.cpu_affinity is available on your OS.")
|
|
424
427
|
|
|
425
428
|
def _process_priority(self):
|
|
426
429
|
if not MS_WINDOWS:
|
|
@@ -15,6 +15,7 @@ from shutil import which
|
|
|
15
15
|
USE_PSUTIL = not bool(sysconfig.get_config_var('Py_GIL_DISABLED'))
|
|
16
16
|
MS_WINDOWS = (sys.platform == 'win32')
|
|
17
17
|
MAC_OS = (sys.platform == 'darwin')
|
|
18
|
+
BSD = ('bsd' in sys.platform)
|
|
18
19
|
|
|
19
20
|
if MS_WINDOWS:
|
|
20
21
|
import msvcrt
|
|
@@ -173,22 +174,7 @@ def sysfs_path(path):
|
|
|
173
174
|
|
|
174
175
|
|
|
175
176
|
def python_implementation():
|
|
176
|
-
|
|
177
|
-
# PEP 421, Python 3.3
|
|
178
|
-
name = sys.implementation.name
|
|
179
|
-
else:
|
|
180
|
-
# Code extracted from platform.python_implementation().
|
|
181
|
-
# Don't import platform to avoid the subprocess import.
|
|
182
|
-
sys_version = sys.version
|
|
183
|
-
if 'IronPython' in sys_version:
|
|
184
|
-
name = 'IronPython'
|
|
185
|
-
elif sys.platform.startswith('java'):
|
|
186
|
-
name = 'Jython'
|
|
187
|
-
elif "PyPy" in sys_version:
|
|
188
|
-
name = "PyPy"
|
|
189
|
-
else:
|
|
190
|
-
name = 'CPython'
|
|
191
|
-
return name.lower()
|
|
177
|
+
return sys.implementation.name.lower()
|
|
192
178
|
|
|
193
179
|
|
|
194
180
|
def python_has_jit():
|
|
@@ -197,6 +183,11 @@ def python_has_jit():
|
|
|
197
183
|
return sys.pypy_translation_info["translation.jit"]
|
|
198
184
|
elif implementation_name in ['graalpython', 'graalpy']:
|
|
199
185
|
return True
|
|
186
|
+
elif implementation_name == 'cpython':
|
|
187
|
+
jit_module = getattr(sys, '_jit', None)
|
|
188
|
+
if jit_module is not None:
|
|
189
|
+
return jit_module.is_enabled()
|
|
190
|
+
return False
|
|
200
191
|
elif hasattr(sys, "pyston_version_info") or "pyston_lite" in sys.modules:
|
|
201
192
|
return True
|
|
202
193
|
return False
|
|
@@ -7,7 +7,8 @@ import pyperf
|
|
|
7
7
|
from pyperf._formatter import (format_number, format_value, format_values,
|
|
8
8
|
format_timedelta)
|
|
9
9
|
from pyperf._hooks import instantiate_selected_hooks
|
|
10
|
-
from pyperf._utils import MS_WINDOWS,
|
|
10
|
+
from pyperf._utils import MS_WINDOWS, percentile, median_abs_dev
|
|
11
|
+
from pyperf._system import OS_LINUX
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
MAX_LOOPS = 2 ** 32
|
|
@@ -327,12 +328,12 @@ class MemoryUsage:
|
|
|
327
328
|
if MS_WINDOWS:
|
|
328
329
|
from pyperf._win_memory import get_peak_pagefile_usage
|
|
329
330
|
self.get_peak_profile_usage = get_peak_pagefile_usage
|
|
330
|
-
elif
|
|
331
|
-
from pyperf.
|
|
331
|
+
elif OS_LINUX:
|
|
332
|
+
from pyperf._linux_memory import PeakMemoryUsageThread
|
|
332
333
|
self.mem_thread = PeakMemoryUsageThread()
|
|
333
334
|
self.mem_thread.start()
|
|
334
335
|
else:
|
|
335
|
-
from pyperf.
|
|
336
|
+
from pyperf._psutil_memory import PeakMemoryUsageThread
|
|
336
337
|
self.mem_thread = PeakMemoryUsageThread()
|
|
337
338
|
self.mem_thread.start()
|
|
338
339
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: pyperf
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.10.0
|
|
4
4
|
Summary: Python module to run and analyze benchmarks
|
|
5
5
|
Author-email: Victor Stinner <vstinner@redhat.com>
|
|
6
6
|
Maintainer-email: Dong-hee Na <donghee.na@python.org>
|
|
@@ -19,6 +19,7 @@ License-File: COPYING
|
|
|
19
19
|
Requires-Dist: psutil>=5.9.0
|
|
20
20
|
Provides-Extra: dev
|
|
21
21
|
Requires-Dist: tox; extra == "dev"
|
|
22
|
+
Dynamic: license-file
|
|
22
23
|
|
|
23
24
|
******
|
|
24
25
|
pyperf
|
|
@@ -28,6 +29,10 @@ pyperf
|
|
|
28
29
|
:alt: Latest release on the Python Cheeseshop (PyPI)
|
|
29
30
|
:target: https://pypi.python.org/pypi/pyperf
|
|
30
31
|
|
|
32
|
+
.. image:: https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2Fpsf%2Fpyperf%2Frefs%2Fheads%2Fmain%2Fpyproject.toml
|
|
33
|
+
:alt: Supported Python versions
|
|
34
|
+
:target: https://pypi.python.org/pypi/pyperf
|
|
35
|
+
|
|
31
36
|
.. image:: https://github.com/psf/pyperf/actions/workflows/build.yml/badge.svg
|
|
32
37
|
:alt: Build status of pyperf on GitHub Actions
|
|
33
38
|
:target: https://github.com/psf/pyperf/actions
|
|
@@ -150,7 +155,7 @@ Command to install pyperf on Python 3::
|
|
|
150
155
|
|
|
151
156
|
python3 -m pip install pyperf
|
|
152
157
|
|
|
153
|
-
pyperf requires Python 3.
|
|
158
|
+
pyperf requires Python 3.9 or newer.
|
|
154
159
|
|
|
155
160
|
Python 2.7 users can use pyperf 1.7.1 which is the last version compatible with
|
|
156
161
|
Python 2.7.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|