Skip to main content

Call stack profiler for Python. Shows you why your code is slow!

Project description

pyinstrument

PyPI version .github/workflows/test.yml Build wheels

Documentation

Screenshot

Pyinstrument is a Python profiler. A profiler is a tool to help you optimize your code - make it faster. To get the biggest speed increase you should focus on the slowest part of your program. Pyinstrument helps you find it!

Installation

pip install pyinstrument

Pyinstrument supports Python 3.7+.

To run Pyinstrument from a git checkout, there's a build step. Take a look at Contributing for more info.

Documentation

To learn how to use pyinstrument, or to check the reference, head to the documentation.

Known issues

  • Profiling code inside a Docker container can cause some strange results, because the gettimeofday syscall that pyinstrument uses is slow in that environment. See #83
  • When using pyinstrument script.py where script.py contains a class serialized with pickle, you might encounter errors because the serialisation machinery doesn't know where __main__ is. See this issue for workarounds

Changelog

v4.0.4

  • Fix a packaging issue where a package called 'test' was installed alongside pyinstrument
  • Use more modern C APIs to resolve deprecation warnings on Python 3.10.
  • Minor docs fixes

v4.0.3

  • CPython 3.10 support
  • Improve error messages when trying to use Profiler from multiple threads
  • Fix crash when rendering sessions that contain a module in a FrameGroup

v4.0.2

  • Fix some packaging issues

v4.0.0

  • Async support! Pyinstrument now detects when an async task hits an await, and tracks time spent outside of the async context under this await.

    So, for example, here's a simple script with an async task that does a sleep:

    import asyncio
    from pyinstrument import Profiler
    
    async def main():
        p = Profiler(async_mode='disabled')
    
        with p:
            print('Hello ...')
            await asyncio.sleep(1)
            print('... World!')
    
        p.print()
    
    asyncio.run(main())
    

    Before Pyinstrument 4.0.0, we'd see only time spent in the run loop, like this:

      _     ._   __/__   _ _  _  _ _/_   Recorded: 18:33:03  Samples:  2
     /_//_/// /_\ / //_// / //_'/ //     Duration: 1.006     CPU time: 0.001
    /   _/                      v3.4.2
    
    Program: examples/async_example_simple.py
    
    1.006 _run_once  asyncio/base_events.py:1784
    └─ 1.005 select  selectors.py:553
          [3 frames hidden]  selectors, <built-in>
             1.005 kqueue.control  <built-in>:0
    

    Now, with pyinstrument 4.0.0, we get:

      _     ._   __/__   _ _  _  _ _/_   Recorded: 18:30:43  Samples:  2
     /_//_/// /_\ / //_// / //_'/ //     Duration: 1.007     CPU time: 0.001
    /   _/                      v4.0.0
    
    Program: examples/async_example_simple.py
    
    1.006 main  async_example_simple.py:4
    └─ 1.005 sleep  asyncio/tasks.py:641
          [2 frames hidden]  asyncio
             1.005 [await]
    

    For more information, check out the async profiling documentation and the Profiler.async_mode property.

  • Pyinstrument has a documentation site, including full Python API docs!

v3.4.2

  • Fix a bug that caused --show, --show-regex, --show-all to be ignored on the command line.

v3.4.1

  • Under-the-hood modernisation

v3.4.0

  • Added timeline option (boolean) to Profiler methods output_html() and open_in_browser().

v3.3.0

  • Fixed issue with pyinstrument -m module, where pyinstrument wouldn't find modules in the current directory.
  • Dropped support for Python 2.7 and 3.5. Old versions will remain available on PyPI, and pip should choose the correct one automatically.

v3.2.0

  • Added the ability to track time in C functions. Minor note - Pyinstrument will record time spent C functions as 'leaf' functions, due to a limitation in how Python records frames. Python -> C -> Python is recorded as Python -> Python, but Python -> Python -> C will be attributed correctly. (#103)

v3.1.2

  • Fix <__array_function__ internals> frames appearing as app code in reports

v3.1.1

  • Added support for timeline mode on HTML and JSON renderers
  • Released as a tarball as well as a universal wheel

v3.1.0

  • Added PYINSTRUMENT_SHOW_CALLBACK option on the Django middleware to add a condition to showing the profile (could be used to run pyinstrument on a live server!)
  • Fixed bug in the Django middleware where file would not be written because of a unicode error

v3.0.3

  • Fixed bug with the Django middleware on Windows where profiling would fail because we were trying to put an illegal character '?' in the profile path. (#66)

v3.0.2

  • Add --show and --show-regex options, to mark certain files to be displayed. This helps to profile inside specific modules, while hiding others. For example, pyinstrument --show '*/sympy/*' script.py.

v3.0.1

  • Fix #60: pass all arguments after -m module_name to the called module
  • Fix crash during HTML/JSON output when no frames were captured.

v3.0.0

  • Pyinstrument will now hide traces through libraries that you're using by default. So instead of showing you loads of frames going through the internals of something external e.g. urllib, it lets you focus on your code.

    Before After
    image image

    To go back to the old behaviour, use --show-all on the command line.

  • 'Entry' frames of hidden groups are shown, so you know which call is the problem

  • Really slow frames in the groups are shown too, e.g. the 'read' call on the socket

  • Application code is highlighted in the console

  • Additional metrics are shown at the top of the trace - timestamp, number of samples, duration, CPU time

  • Hidden code is controlled by the --hide or --hide-regex options - matching on the path of the code files.

      --hide=EXPR           glob-style pattern matching the file paths whose
                            frames to hide. Defaults to '*/lib/*'.
      --hide-regex=REGEX    regex matching the file paths whose frames to hide.
                            Useful if --hide doesn't give enough control.
    
  • Outputting a timeline is supported from the command line.

      -t, --timeline        render as a timeline - preserve ordering and don't
                            condense repeated calls
    
  • Because there are a few rendering options now, you can load a previous profiling session using --load-prev - pyinstrument keeps the last 10 sessions.

  • Hidden groups can also call back into application code, that looks like this:

    image

  • (internal) When recording timelines, frame trees are completely linear now, allowing for the creation of super-accurate frame charts.

  • (internal) The HTML renderer has been rewritten as a Vue.js app. All the console improvements apply to the HTML output too, plus it's interactive.

  • (internal) A lot of unit and integration tests added!

Yikes! See #49 for the gory details. I hope you like it.

v2.3.0

  • Big refactor!
    • Recorders have been removed. The frame recording is now internal to the Profiler object. This means the 'frame' objects are more general-purpose, which paves the way for...
    • Processors! These are functions that mutate the tree to sculpt the output. They are used by the renderers to filter the output to the correct form. Now, instead of a time-aggregating recorder, the profiler just uses timeline-style recording (this is lower-overhead anyway) and the aggregation is done as a processing step.
    • The upshot of this is that it's now way easier to alter the tree to filter stuff out, and do more advanced things like combining frames that we don't care about. More features to come that use this in v3.0!
  • Importlib frames are removed - you won't see them at all. Their children are retained, so imports are just transparent.
  • Django profile file name is now limited to a hundred of characters (#50)
  • Fix bug with --html option (#53)
  • Add --version command line option

v2.2.1

  • Fix crash when using on the command line.

v2.2.0

  • Added support for JSON output. Use pyinstrument --renderer=json scriptfile.py. PR

  • @iddan has put together an interactive viewer using the JSON output!

    image

  • When running pyinstrument --html and you don't pipe the output to a file, pyinstrument will write the console output to a temp file and open that in a browser.

v2.1.0

  • Added support for running modules with pyinstrument via the command line. The new syntax is the -m flag e.g. pyinstrument -m module_name! PR

v2.0.4

v2.0.3

  • Pyinstrument can now be used in a with block.

    For example:

    profiler = pyinstrument.Profiler()
    with profiler:
        # do some work here...
    print(profiler.output_text())
    
  • Middleware fix for older versions of Django

v2.0.2

  • Fix for max recursion error when used to profile programs with a lot of frames on the stack.

v2.0.1

  • Ensure license is included in the sdist.

v2.0.0

  • Pyinstrument uses a new profiling mode. Rather than using signals, pyintrument uses a new statistical profiler built on PyEval_SetProfile. This means no more main thread restriction, no more IO errors when using Pyinstrument, and no need for a separate more 'setprofile' mode!

  • Renderers. Users can customize Pyinstrument to use alternative renderers with the renderer argument on Profiler.output(), or using the --renderer argument on the command line.

  • Recorders. To support other use cases of Pyinstrument (e.g. flame charts), pyinstrument now has a 'timeline' recorder mode. This mode records captured frames in a linear way, so the program execution can be viewed on a timeline.

v0.13

  • pyinstrument command. You can now profile python scripts from the shell by running $ pyinstrument script.py. This is now equivalent to python -m pyinstrument. Thanks @asmeurer!

v0.12

  • Application code is highlighted in HTML traces to make it easier to spot

  • Added PYINSTRUMENT_PROFILE_DIR option to the Django interface, which will log profiles of all requests to a file the specified folder. Useful for profiling API calls.

  • Added PYINSTRUMENT_USE_SIGNAL option to the Django interface, for use when signal mode presents problems.

Contributing

To setup a dev environment:

virtualenv --python=python3 env
. env/bin/activate
pip install -r requirements-dev.txt

To get some sample output:

pyinstrument examples/wikipedia_article_word_count.py

To run the tests:

pytest

The HTML renderer Vue.js app

The HTML renderer works by embedding a JSON representation of the sample with a Javascript 'bundle' inside an HTML file that can be viewed in any web browser.

To edit the html renderer style, do:

cd html_renderer
npm ci
npm run serve

When launched without a top-level window.profileSession object, it will fetch a sample profile so you can work with it.

To compile the JS app and bundle it back into the pyinstrument python tool:

bin/build_js_bundle.py [--force]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyinstrument-4.0.4.tar.gz (360.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyinstrument-4.0.4-cp310-cp310-win_amd64.whl (87.6 kB view details)

Uploaded CPython 3.10Windows x86-64

pyinstrument-4.0.4-cp310-cp310-win32.whl (86.7 kB view details)

Uploaded CPython 3.10Windows x86

pyinstrument-4.0.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (103.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.12+ x86-64manylinux: glibc 2.5+ x86-64

pyinstrument-4.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl (102.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.12+ i686manylinux: glibc 2.5+ i686

pyinstrument-4.0.4-cp310-cp310-macosx_10_9_x86_64.whl (83.9 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

pyinstrument-4.0.4-cp310-cp310-macosx_10_9_universal2.whl (88.5 kB view details)

Uploaded CPython 3.10macOS 10.9+ universal2 (ARM64, x86-64)

pyinstrument-4.0.4-cp39-cp39-win_amd64.whl (87.5 kB view details)

Uploaded CPython 3.9Windows x86-64

pyinstrument-4.0.4-cp39-cp39-win32.whl (86.7 kB view details)

Uploaded CPython 3.9Windows x86

pyinstrument-4.0.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (103.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.12+ x86-64manylinux: glibc 2.5+ x86-64

pyinstrument-4.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl (102.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.12+ i686manylinux: glibc 2.5+ i686

pyinstrument-4.0.4-cp39-cp39-macosx_10_9_x86_64.whl (83.9 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

pyinstrument-4.0.4-cp39-cp39-macosx_10_9_universal2.whl (88.5 kB view details)

Uploaded CPython 3.9macOS 10.9+ universal2 (ARM64, x86-64)

pyinstrument-4.0.4-cp38-cp38-win_amd64.whl (87.0 kB view details)

Uploaded CPython 3.8Windows x86-64

pyinstrument-4.0.4-cp38-cp38-win32.whl (86.5 kB view details)

Uploaded CPython 3.8Windows x86

pyinstrument-4.0.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (102.9 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.12+ x86-64manylinux: glibc 2.5+ x86-64

pyinstrument-4.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl (102.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.12+ i686manylinux: glibc 2.5+ i686

pyinstrument-4.0.4-cp38-cp38-macosx_10_9_x86_64.whl (83.7 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

pyinstrument-4.0.4-cp38-cp38-macosx_10_9_universal2.whl (87.9 kB view details)

Uploaded CPython 3.8macOS 10.9+ universal2 (ARM64, x86-64)

pyinstrument-4.0.4-cp37-cp37m-win_amd64.whl (87.0 kB view details)

Uploaded CPython 3.7mWindows x86-64

pyinstrument-4.0.4-cp37-cp37m-win32.whl (86.4 kB view details)

Uploaded CPython 3.7mWindows x86

pyinstrument-4.0.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (102.4 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.12+ x86-64manylinux: glibc 2.5+ x86-64

pyinstrument-4.0.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl (101.7 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.12+ i686manylinux: glibc 2.5+ i686

pyinstrument-4.0.4-cp37-cp37m-macosx_10_9_x86_64.whl (83.6 kB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

File details

Details for the file pyinstrument-4.0.4.tar.gz.

File metadata

  • Download URL: pyinstrument-4.0.4.tar.gz
  • Upload date:
  • Size: 360.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for pyinstrument-4.0.4.tar.gz
Algorithm Hash digest
SHA256 c731b31fdf9022eee0b771b509fc9f4cbe268a659d15c962832478e993aa37bc
MD5 0fd18e6b961f3f2365ac2f5c593651bf
BLAKE2b-256 f40ae32cb70d29b3119e49d5efef4ee9403fa98c1a1ed4f4113dc519865e54f1

See more details on using hashes here.

File details

Details for the file pyinstrument-4.0.4-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pyinstrument-4.0.4-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 87.6 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for pyinstrument-4.0.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 2f7f870e7456a958c52ed907d4309e685d446369877c7a2a908aecb7257d5f26
MD5 51d7c0130c8e01a7b4b6619dd6f0c465
BLAKE2b-256 b70b3e254f44889f1cfab188e62bbd34f27dfaeb666d3c985f3f321e89ceec5e

See more details on using hashes here.

File details

Details for the file pyinstrument-4.0.4-cp310-cp310-win32.whl.

File metadata

  • Download URL: pyinstrument-4.0.4-cp310-cp310-win32.whl
  • Upload date:
  • Size: 86.7 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for pyinstrument-4.0.4-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 ab78269495a2256eaa9d401dfc84cae211a6092c79a3357f871816a56ad862f4
MD5 f7b61e5da79db888dad6d98db3c7c195
BLAKE2b-256 b556fe8a9a7f63aaf518acd0d3702b6eb9908141926c1e043de25e14241b64ef

See more details on using hashes here.

File details

Details for the file pyinstrument-4.0.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for pyinstrument-4.0.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 4a9764456540d6af3524b65c37508d1917de5fba1be8e2dda3134718c903cace
MD5 5ac3b32a5a7cb4c645c1e554a4693f78
BLAKE2b-256 43878b64d900b350d9a82900018434e6b126bc49bd848560e1e53330201a2c8b

See more details on using hashes here.

File details

Details for the file pyinstrument-4.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for pyinstrument-4.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 229c6f668b62d5e13f53f154d242ec16b48c859c5a48361b6f562e50ec93d936
MD5 ee173ed256024855d5cb996260cecbd4
BLAKE2b-256 d610f44feb006cfe4acba17e72fa08dbebb8778f498b1a4141bc4323bfcadc4e

See more details on using hashes here.

File details

Details for the file pyinstrument-4.0.4-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: pyinstrument-4.0.4-cp310-cp310-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 83.9 kB
  • Tags: CPython 3.10, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for pyinstrument-4.0.4-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 497ee9e31d00356cceb9952506ad2c2b53de16416d14fd9e73520a893719f985
MD5 fa81df1412553bd61e7105a7a1534c76
BLAKE2b-256 16c1b3dafd115e08240afbee671b508934a9a60daecf37d4070c026b4df3e4e1

See more details on using hashes here.

File details

Details for the file pyinstrument-4.0.4-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

  • Download URL: pyinstrument-4.0.4-cp310-cp310-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 88.5 kB
  • Tags: CPython 3.10, macOS 10.9+ universal2 (ARM64, x86-64)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for pyinstrument-4.0.4-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 b7f7d8049b6f32f48d83b519bc41743969c1f67cc18b6a64162a6690e327a8b3
MD5 8a6e3a3ebcae11d942a40396e5d7c4fa
BLAKE2b-256 fb66c42db0bbd55619cfb3207ad7dda3b3a76fb0349498e8ea4d6651c572a88f

See more details on using hashes here.

File details

Details for the file pyinstrument-4.0.4-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pyinstrument-4.0.4-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 87.5 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for pyinstrument-4.0.4-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 2161a8c52d01f7d1c0a490d95d318eddc18914d7c26975177d5629bac9eabea9
MD5 39c1d558936b31d4821b05cdde175de9
BLAKE2b-256 c6619e3b458059957a57cae8642bc8defc4cfc136730e99e0605e7a12ce3ddc8

See more details on using hashes here.

File details

Details for the file pyinstrument-4.0.4-cp39-cp39-win32.whl.

File metadata

  • Download URL: pyinstrument-4.0.4-cp39-cp39-win32.whl
  • Upload date:
  • Size: 86.7 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for pyinstrument-4.0.4-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 3c71e975378ad7061be65c5e91317247fd44e6353ee37034933732b0419259fd
MD5 1cba9cb11af4e06af4573d43f633b7b1
BLAKE2b-256 7941e15e0eb6b9ab5f635768fd2904c7932a3aed2e81ec9e7c49b02f7ac8a34a

See more details on using hashes here.

File details

Details for the file pyinstrument-4.0.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for pyinstrument-4.0.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 91572e03abba7af7d622fa3872d3e73dd8f08bcbb070ab04df009b972acdb443
MD5 117b842033373355358cdf7041df3fe6
BLAKE2b-256 400720cb18b54510d4b9bf5f7c260124e59dfefc20eaddbb07ba03fb97ae07d3

See more details on using hashes here.

File details

Details for the file pyinstrument-4.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for pyinstrument-4.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 3a909033dfec24d36f91e13fb2f4a4efab949cdcedbf273329b3c77d68837d10
MD5 537dc348757d08de7265b6071ef6cf04
BLAKE2b-256 a78c209f8bc14b0f9c0094794303a49fe167d98599f7f3fb8b6af317460a30a4

See more details on using hashes here.

File details

Details for the file pyinstrument-4.0.4-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: pyinstrument-4.0.4-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 83.9 kB
  • Tags: CPython 3.9, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for pyinstrument-4.0.4-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8479fb2314a823d951c84701faf1d757f0e06f6b2224942e3068ae8ee51179e6
MD5 ee4821fe308cd793dd4599650a266074
BLAKE2b-256 8255fb0a1bb4e745670b80040954e5d36eee0298c029cb31c07cb4fbf10972c1

See more details on using hashes here.

File details

Details for the file pyinstrument-4.0.4-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

  • Download URL: pyinstrument-4.0.4-cp39-cp39-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 88.5 kB
  • Tags: CPython 3.9, macOS 10.9+ universal2 (ARM64, x86-64)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for pyinstrument-4.0.4-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 45bc5dd94090f8ebd9f73b20c02383e8e528a8de04228a04b1dce43829ff1f71
MD5 7ffc0137dfcc1482e55f869f202e652e
BLAKE2b-256 12d0f5746c1cfc3178f742758198dd5b997a0246d4038432b3ffae2371a3726e

See more details on using hashes here.

File details

Details for the file pyinstrument-4.0.4-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: pyinstrument-4.0.4-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 87.0 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for pyinstrument-4.0.4-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 e283ec641db39d03ea247c9e1b01474d27dd9024ba8d1db43786ab39fcfacb5c
MD5 1e6a29b3d59faafdad2bcf43dd06082e
BLAKE2b-256 3c2dca6c40b1ea58d171e77f27026140bd47f70c5402ab6e8766596467cfb6be

See more details on using hashes here.

File details

Details for the file pyinstrument-4.0.4-cp38-cp38-win32.whl.

File metadata

  • Download URL: pyinstrument-4.0.4-cp38-cp38-win32.whl
  • Upload date:
  • Size: 86.5 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for pyinstrument-4.0.4-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 2ff63a54b9c57327a8b456d836d99043a30ef5eb927a2c169b4c76ee4d6ab7b3
MD5 c20f18cb75f214e7abe4ec9619dfbedf
BLAKE2b-256 1c979460ae499016fcf41ece194bad16d68bc2cd594d840462c04eafd6d0097d

See more details on using hashes here.

File details

Details for the file pyinstrument-4.0.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for pyinstrument-4.0.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 bcb054b3d3ad9c2d43417771f27ee84e1f2324a524fbb86e5d335f9cdcfcee5f
MD5 57ea3043dfc62daded9667991e9549a5
BLAKE2b-256 150f7220b27494215146583b80c24ae863c6ac60c3c78f562a80b82a2eaa071a

See more details on using hashes here.

File details

Details for the file pyinstrument-4.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for pyinstrument-4.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 4c2bcf5a0a712eb26a8250265e46a469caeebfbbabde6e449aeae57642465008
MD5 6058baee5e5861cb058aa9af0360fb76
BLAKE2b-256 8f3cbb325e48c83b2e830654d09d6655488ff93ed87a3be4411e219d6a26ac42

See more details on using hashes here.

File details

Details for the file pyinstrument-4.0.4-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: pyinstrument-4.0.4-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 83.7 kB
  • Tags: CPython 3.8, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for pyinstrument-4.0.4-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 453143066737555fb2f74746028b54f8114fafd36977079a1b9c5a53f5907f4b
MD5 9f40eefe658fa0ee561f0d47f6074fa1
BLAKE2b-256 f569e589b7e893ca316aabc5379189cde117b178cbc5852fcb308cf32193e699

See more details on using hashes here.

File details

Details for the file pyinstrument-4.0.4-cp38-cp38-macosx_10_9_universal2.whl.

File metadata

  • Download URL: pyinstrument-4.0.4-cp38-cp38-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 87.9 kB
  • Tags: CPython 3.8, macOS 10.9+ universal2 (ARM64, x86-64)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for pyinstrument-4.0.4-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 4747d5eb315d3b2183a3c780b789cd2c322d19f2e7bb0753d87558a86063071e
MD5 2a1bb5be1b6bbc6809bbe85530491ff6
BLAKE2b-256 7f7adc4a5f1c54ecf86052fcc91557c5d4e5732e6982eacd0fc1f181e4bfc3b0

See more details on using hashes here.

File details

Details for the file pyinstrument-4.0.4-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: pyinstrument-4.0.4-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 87.0 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for pyinstrument-4.0.4-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 8d41c09a07d898c2d3762cf21cb75f7b22c33e346c2e5fb75eb2d5d693457298
MD5 c5db76d71b1115f63d18aba00467223f
BLAKE2b-256 6f9e4d290f105682892118279d0036498ecbae5ac80587a3e5c56c4591368840

See more details on using hashes here.

File details

Details for the file pyinstrument-4.0.4-cp37-cp37m-win32.whl.

File metadata

  • Download URL: pyinstrument-4.0.4-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 86.4 kB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for pyinstrument-4.0.4-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 e846fa6bfd7b5704a923c3028cdc991eb9b67fb71f2bba5cc4051d349e643d32
MD5 7ac8e0add5cadbbdf59476ecf2d8cfe7
BLAKE2b-256 2a762b513fb8fcd6847ad00f8a823c3c0391439799b5d4e8143dfdc1a7b8371a

See more details on using hashes here.

File details

Details for the file pyinstrument-4.0.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for pyinstrument-4.0.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 6af1994a480bc8aa78c59b4996e951710954e0dfc0366792d16563b5eda391f5
MD5 b10c3a9e7a05bac7356c368a42a32c32
BLAKE2b-256 552e54fa573c2cfa276d832ea005d2e88aa108a0c246296b898ad3b9cdba865d

See more details on using hashes here.

File details

Details for the file pyinstrument-4.0.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for pyinstrument-4.0.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 9e50b711320f0c44aae4e4e110b53675c27d302fc7a6ad5771aedb27f0f08f64
MD5 15bb1b2b34ff0c0385f2c3a3c62057e9
BLAKE2b-256 50d16a2d7ceefb27b754dabe69dc248b66da984ad63133572fa1d439d0a69e8e

See more details on using hashes here.

File details

Details for the file pyinstrument-4.0.4-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: pyinstrument-4.0.4-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 83.6 kB
  • Tags: CPython 3.7m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for pyinstrument-4.0.4-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 686c5c7295551d59e63f4b7e942fd3feed8a8845c1fcc514f53e465b84e23c3b
MD5 cba74eac4296ac18e4d572027fd02d14
BLAKE2b-256 3825cc0eeca27015570e8838cb79eb85b95828734bf9b9de06f8bce9a8428c33

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page