Skip to main content

A memory profiler for Python applications

Project description


OS Linux OS MacOS PyPI - Python Version PyPI - Implementation PyPI PyPI - Downloads Conda Version Tests Code Style

Memray output

Memray is a memory profiler for Python. It can track memory allocations in Python code, in native extension modules, and in the Python interpreter itself. It can generate several different types of reports to help you analyze the captured memory usage data. While commonly used as a CLI tool, it can also be used as a library to perform more fine-grained profiling tasks.

Notable features:

  • 🕵️‍♀️ Traces every function call so it can accurately represent the call stack, unlike sampling profilers.
  • ℭ Also handles native calls in C/C++ libraries so the entire call stack is present in the results.
  • 🏎 Blazing fast! Profiling slows the application only slightly. Tracking native code is somewhat slower, but this can be enabled or disabled on demand.
  • 📈 It can generate various reports about the collected memory usage data, like flame graphs.
  • 🧵 Works with Python threads.
  • 👽🧵 Works with native-threads (e.g. C++ threads in C extensions).

Memray can help with the following problems:

  • Analyze allocations in applications to help discover the cause of high memory usage.
  • Find memory leaks.
  • Find hotspots in code that cause a lot of allocations.

Note Memray only works on Linux and MacOS, and cannot be installed on other platforms.

Help us improve Memray!

We are constantly looking for feedback from our awesome community ❤️. If you have used Memray to solve a problem, profile an application, find a memory leak or anything else, please let us know! We would love to hear about your experience and how Memray helped you.

Please, consider writing your story in the Success Stories discussion page.

It really makes a difference!

Installation

Memray requires Python 3.7+ and can be easily installed using most common Python packaging tools. We recommend installing the latest stable release from PyPI with pip:

    python3 -m pip install memray

Notice that Memray contains a C extension so releases are distributed as binary wheels as well as the source code. If a binary wheel is not available for your system (Linux x86/x64 or macOS), you'll need to ensure that all the dependencies are satisfied on the system where you are doing the installation.

Building from source

If you wish to build Memray from source you need the following binary dependencies in your system:

  • libunwind (for Linux)
  • liblz4

Check your package manager on how to install these dependencies (for example apt-get install libunwind-dev liblz4-dev in Debian-based systems or brew install lz4 in MacOS). Note that you may need to teach the compiler where to find the header and library files of the dependencies. For example, in MacOS with brew you may need to run:

export CFLAGS="-I$(brew --prefix lz4)/include" LDFLAGS="-L$(brew --prefix lz4)/lib -Wl,-rpath,$(brew --prefix lz4)/lib"

before installing memray. Check the documentation of your package manager to know the location of the header and library files for more detailed information.

Once you have the binary dependencies installed, you can clone the repository and follow with the normal building process:

git clone git@github.com:bloomberg/memray.git memray
cd memray
python3 -m venv ../memray-env/  # just an example, put this wherever you want
source ../memray-env/bin/activate
python3 -m pip install --upgrade pip
python3 -m pip install -e . -r requirements-test.txt -r requirements-extra.txt

This will install Memray in the virtual environment in development mode (the -e of the last pip install command).

Documentation

You can find the latest documentation available here.

Usage

There are many ways to use Memray. The easiest way is to use it as a command line tool to run your script, application, or library.

usage: memray [-h] [-v] {run,flamegraph,table,live,tree,parse,summary,stats} ...

Memory profiler for Python applications

Run `memray run` to generate a memory profile report, then use a reporter command
such as `memray flamegraph` or `memray table` to convert the results into HTML.

Example:

    $ python3 -m memray run -o output.bin my_script.py
    $ python3 -m memray flamegraph output.bin

positional arguments:
  {run,flamegraph,table,live,tree,parse,summary,stats}
                        Mode of operation
    run                 Run the specified application and track memory usage
    flamegraph          Generate an HTML flame graph for peak memory usage
    table               Generate an HTML table with all records in the peak memory usage
    live                Remotely monitor allocations in a text-based interface
    tree                Generate a tree view in the terminal for peak memory usage
    parse               Debug a results file by parsing and printing each record in it
    summary             Generate a terminal-based summary report of the functions that allocate most memory
    stats               Generate high level stats of the memory usage in the terminal

optional arguments:
  -h, --help            Show this help message and exit
  -v, --verbose         Increase verbosity. Option is additive and can be specified up to 3 times

Please submit feedback, ideas, and bug reports by filing a new issue at https://github.com/bloomberg/memray/issues

To use Memray over a script or a single python file you can use

python3 -m memray run my_script.py

If you normally run your application with python3 -m my_module, you can use the -m flag with memray run:

python3 -m memray run -m my_module

You can also invoke Memray as a command line tool without having to use -m to invoke it as a module:

memray run my_script.py
memray run -m my_module

The output will be a binary file (like memray-my_script.2369.bin) that you can analyze in different ways. One way is to use the memray flamegraph command to generate a flame graph:

memray flamegraph my_script.2369.bin

This will produce an HTML file with a flame graph of the memory usage that you can inspect with your favorite browser. There are multiple other reporters that you can use to generate other types of reports, some of them generating terminal-based output and some of them generating HTML files. Here is an example of a Memray flamegraph:

Pytest plugin

If you want an easy and convenient way to use memray in your test suite, you can consider using pytest-memray. Once installed, this pytest plugin allows you to simply add --memray to the command line invocation:

pytest --memray tests/

And will automatically get a report like this:

python3 -m pytest tests --memray
=============================================================================================================================== test session starts ================================================================================================================================
platform linux -- Python 3.8.10, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
rootdir: /mypackage, configfile: pytest.ini
plugins: cov-2.12.0, memray-0.1.0
collected 21 items

tests/test_package.py .....................                                                                                                                                                                                                                      [100%]


================================================================================================================================= MEMRAY REPORT ==================================================================================================================================
Allocations results for tests/test_package.py::some_test_that_allocates

	 📦 Total memory allocated: 24.4MiB
	 📏 Total allocations: 33929
	 📊 Histogram of allocation sizes: |▂   █    |
	 🥇 Biggest allocating functions:
		- parse:/opt/bb/lib/python3.8/ast.py:47 -> 3.0MiB
		- parse:/opt/bb/lib/python3.8/ast.py:47 -> 2.3MiB
		- _visit:/opt/bb/lib/python3.8/site-packages/astroid/transforms.py:62 -> 576.0KiB
		- parse:/opt/bb/lib/python3.8/ast.py:47 -> 517.6KiB
		- __init__:/opt/bb/lib/python3.8/site-packages/astroid/node_classes.py:1353 -> 512.0KiB

You can also use some of the included markers to make tests fail if the execution of said test allocates more memory than allowed:

@pytest.mark.limit_memory("24 MB")
def test_foobar():
    # do some stuff that allocates memory

To learn more on how the plugin can be used and configured check out the plugin documentation.

Native mode

Memray supports tracking native C/C++ functions as well as Python functions. This can be especially useful when profiling applications that have C extensions (such as numpy or pandas) as this gives a holistic vision of how much memory is allocated by the extension and how much is allocated by Python itself.

To activate native tracking, you need to provide the --native argument when using the run subcommand:

memray run --native my_script.py

This will automatically add native information to the result file and it will be automatically used by any reporter (such the flamegraph or table reporters). This means that instead of seeing this in the flamegraphs:

You will now be able to see what's happening inside the Python calls:

Reporters display native frames in a different color than Python frames. They can also be distinguished by looking at the file location in a frame (Python frames will generally be generated from files with a .py extension while native frames will be generated from files with extensions like .c, .cpp or .h).

Live mode

Memray output

Memray's live mode runs a script or a module in a terminal-based interface that allows you to interactively inspect its memory usage while it runs. This is useful for debugging scripts or modules that take a long time to run or that exhibit multiple complex memory patterns. You can use the --live option to run the script or module in live mode:

    memray run --live my_script.py

or if you want to execute a module:

    memray run --live -m my_module

This will show the following TUI interface in your terminal:

Sorting results

The results are displayed in descending order of total memory allocated by a function and the subfunctions called by it. You can change the ordering with the following keyboard shortcuts:

  • t (default): Sort by total memory

  • o: Sort by own memory

  • a: Sort by allocation count

The sorted column is highlighted with < > characters around the title.

Viewing different threads

By default, the live command will present the main thread of the program. You can look at different threads of the program by pressing the left and right arrow keys.

API

In addition to tracking Python processes from a CLI using memray run, it is also possible to programmatically enable tracking within a running Python program.

import memray

with memray.Tracker("output_file.bin"):
    print("Allocations will be tracked until the with block ends")

For details, see the API documentation.

License

Memray is Apache-2.0 licensed, as found in the LICENSE file.

Code of Conduct

This project has adopted a Code of Conduct. If you have any concerns about the Code, or behavior that you have experienced in the project, please contact us at opensource@bloomberg.net.

Security Policy

If you believe you have identified a security vulnerability in this project, please send an email to the project team at opensource@bloomberg.net, detailing the suspected issue and any methods you've found to reproduce it.

Please do NOT open an issue in the GitHub repository, as we'd prefer to keep vulnerability reports private until we've had an opportunity to review and address them.

Contributing

We welcome your contributions to help us improve and extend this project!

Below you will find some basic steps required to be able to contribute to the project. If you have any questions about this process or any other aspect of contributing to a Bloomberg open source project, feel free to send an email to opensource@bloomberg.net and we'll get your questions answered as quickly as we can.

Contribution Licensing

Since this project is distributed under the terms of an open source license, contributions that you make are licensed under the same terms. In order for us to be able to accept your contributions, we will need explicit confirmation from you that you are able and willing to provide them under these terms, and the mechanism we use to do this is called a Developer's Certificate of Origin (DCO). This is very similar to the process used by the Linux(R) kernel, Samba, and many other major open source projects.

To participate under these terms, all that you must do is include a line like the following as the last line of the commit message for each commit in your contribution:

Signed-Off-By: Random J. Developer <random@developer.example.org>

The simplest way to accomplish this is to add -s or --signoff to your git commit command.

You must use your real name (sorry, no pseudonyms, and no anonymous contributions).

Steps

  • Create an Issue, select 'Feature Request', and explain the proposed change.
  • Follow the guidelines in the issue template presented to you.
  • Submit the Issue.
  • Submit a Pull Request and link it to the Issue by including "#" in the Pull Request summary.

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

memray-1.4.0.tar.gz (958.5 kB view details)

Uploaded Source

Built Distributions

memray-1.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

memray-1.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (3.7 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

memray-1.4.0-cp311-cp311-macosx_11_0_arm64.whl (678.4 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

memray-1.4.0-cp311-cp311-macosx_10_14_x86_64.whl (637.0 kB view details)

Uploaded CPython 3.11 macOS 10.14+ x86-64

memray-1.4.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.12+ x86-64

memray-1.4.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl (2.8 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.12+ i686

memray-1.4.0-cp310-cp310-macosx_11_0_arm64.whl (679.6 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

memray-1.4.0-cp310-cp310-macosx_10_14_x86_64.whl (640.9 kB view details)

Uploaded CPython 3.10 macOS 10.14+ x86-64

memray-1.4.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.12+ x86-64

memray-1.4.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl (2.8 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.12+ i686

memray-1.4.0-cp39-cp39-macosx_11_0_arm64.whl (681.1 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

memray-1.4.0-cp39-cp39-macosx_10_14_x86_64.whl (642.0 kB view details)

Uploaded CPython 3.9 macOS 10.14+ x86-64

memray-1.4.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64

memray-1.4.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl (2.9 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ i686

memray-1.4.0-cp38-cp38-macosx_11_0_arm64.whl (697.9 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

memray-1.4.0-cp38-cp38-macosx_10_14_x86_64.whl (658.1 kB view details)

Uploaded CPython 3.8 macOS 10.14+ x86-64

memray-1.4.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ x86-64

memray-1.4.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl (2.9 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ i686

File details

Details for the file memray-1.4.0.tar.gz.

File metadata

  • Download URL: memray-1.4.0.tar.gz
  • Upload date:
  • Size: 958.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.15

File hashes

Hashes for memray-1.4.0.tar.gz
Algorithm Hash digest
SHA256 ac7b7d0197c7cca1a7f1be2986541dc4c0b1b5de41673bbcc218852bc973933a
MD5 fe918c586247c5abcabe30e660a0195b
BLAKE2b-256 c8ccc705e27cb0da72c5c4f65b531e08887354430e94599b9146bd04ee1eb1f9

See more details on using hashes here.

Provenance

File details

Details for the file memray-1.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for memray-1.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2d053b76237b66e05b338d6c052ab8022f185a6223d7988db25bb3b388144697
MD5 e947b2dd3753eccdcedb4b904fbd03d6
BLAKE2b-256 1cd2c0ca719177def7115acaa990d713ab956889a10fbd0eb4d5972f2215c562

See more details on using hashes here.

Provenance

File details

Details for the file memray-1.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for memray-1.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0fd7d499ecfb006ffc46f37110aac22c61af48344cbd3616c103be0bf1593b9d
MD5 22157a088ed3215414c447325f025679
BLAKE2b-256 e26cefea560b9a5ff1de8589a981ab56bf107d26d5c1eb8ce6865e830e72e986

See more details on using hashes here.

Provenance

File details

Details for the file memray-1.4.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for memray-1.4.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e920009791ec9046902dfb465e8aa3516f548439393b6419c72882532c63b1c8
MD5 65c065d954dfb87092d16cf6f651fcb2
BLAKE2b-256 c23267354ed6a72397680d8fe481d6cba9016cdf950ddba6080f2f193817a89e

See more details on using hashes here.

Provenance

File details

Details for the file memray-1.4.0-cp311-cp311-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for memray-1.4.0-cp311-cp311-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 37a9b8f48fae908b4a21b8e56c5a9140ec8f03a8505b6eb8defe88455047a007
MD5 be973649d4d7394f390a0cb464b681fc
BLAKE2b-256 d20746416cb089efc2e3fe3868c4bf8e06412d22b8d3d11039b043765a2e85d5

See more details on using hashes here.

Provenance

File details

Details for the file memray-1.4.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for memray-1.4.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 28371a73db10febaf417058aa18f5d84f89deca58118ab3ffd87906b04e54bcf
MD5 0ddcb17c0bf01a7fae0444133bdf399a
BLAKE2b-256 2c50ab0e9ebcabdf0d5fa0aaba72ab40e35be6d5f374861bde268f3cb58a5855

See more details on using hashes here.

Provenance

File details

Details for the file memray-1.4.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for memray-1.4.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 9d5d2842ada9b4212a76cdbd6c59c4acb0f07c2d5ba65722a805dec98b4aa33e
MD5 6722ae2869fe75834431beda6ca8c8bf
BLAKE2b-256 6a1f0b3f81ef42dbc76a038e19415add79fc61eb8097ce76a31773e1a3a575a6

See more details on using hashes here.

Provenance

File details

Details for the file memray-1.4.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for memray-1.4.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b742c5a6c22cc901e86b2b32ec2461f92dc4a563d6247fea0d1956bf2572ea61
MD5 f2b795b9e6cfa6c730c011400d0cfbc7
BLAKE2b-256 6413d59af9e22009a945265fab4d085d757b5f9ef32208f2b64bd46d157f4fc9

See more details on using hashes here.

Provenance

File details

Details for the file memray-1.4.0-cp310-cp310-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for memray-1.4.0-cp310-cp310-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 da70970a80f6bba8d3c4ab3786764603ebad52f567617ca243da5be395691468
MD5 33a65672b481120544ac0e3eb4a86f02
BLAKE2b-256 104f9b573ff851175a5ef8e7ce2def9947c8655ec7502e6fef820c752f19955a

See more details on using hashes here.

Provenance

File details

Details for the file memray-1.4.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for memray-1.4.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 0e734e4d2ee943eed9a06a2226c4a4ea842b7819dfee199a0ef30a9046c1a213
MD5 0d42ac0a6ffbe54f0016d17ccb1533c2
BLAKE2b-256 a0d2ab24bbc458df0b7178a40eb1671840e8d15f2f7814836aad7a4b00678b6c

See more details on using hashes here.

Provenance

File details

Details for the file memray-1.4.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for memray-1.4.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 92a09111eefceb115f4b9a92c0149884f2abc631db8271da3a890d0732772b6a
MD5 053fe40d5da3fc2abfe84e4d68772a6a
BLAKE2b-256 63365fa94bc15e95b3d1c3f4b0f18737c8b57a8345f40515551cae8528491fc8

See more details on using hashes here.

Provenance

File details

Details for the file memray-1.4.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for memray-1.4.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4d75ec275d3fc46c1735c340b9610902756ff611f58076bdc4e50ab2cf1fde36
MD5 6336e22c7d51077982fbdd9dc1cecc18
BLAKE2b-256 c174feafe4f07e3c54c212e7875ef48ad5195818f73231512c5103d412d0a1bc

See more details on using hashes here.

Provenance

File details

Details for the file memray-1.4.0-cp39-cp39-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for memray-1.4.0-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 8e0003a3a3983e21e2e4df3bc56a10b9aa2bc16a4d9b6cf71184e843a2b7fc7a
MD5 4afd971636e3305c55337fb1e9c5a9ab
BLAKE2b-256 ed556ac1668f04ee67a1897771a49b85422ffc64f2f7b73560441c6604acef41

See more details on using hashes here.

Provenance

File details

Details for the file memray-1.4.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for memray-1.4.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 03195c68e56f92847cd1a3aa75137a95d8a377970641f134cef7f07f60319e41
MD5 00f6a856add24d192f6d6a7f2b714a41
BLAKE2b-256 ef7e40eeea4beea34f04818337e09eadab58b12c804c1d39a9ec003f4cf092b9

See more details on using hashes here.

Provenance

File details

Details for the file memray-1.4.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for memray-1.4.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 f8ea59a501789673694a1786baeee9590f86845d1b0d765c313d92873da67f92
MD5 9c3f3a4c0289f2613c8e085d0d307d93
BLAKE2b-256 1593da1e2afa11750ca95c33f0cfc0c753e2e91329385c081a4e49c6fabb7f56

See more details on using hashes here.

Provenance

File details

Details for the file memray-1.4.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for memray-1.4.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c666f5d1cec1ee33fb5c88e8f27ea4f8abd495e463250c686906e2ec09654b21
MD5 380241eeeaee04c6f976ad88e7936d12
BLAKE2b-256 8e4d81dd743bd3d29dec3625288f093be3e07ef9b7dfda77e990bfff0c69d614

See more details on using hashes here.

Provenance

File details

Details for the file memray-1.4.0-cp38-cp38-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for memray-1.4.0-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 fa3dfce6d8373178b33386369656890a26942f049ce33fe53cc32017a46b4954
MD5 1cb93d4a6634dc032572bf949d0d7bd8
BLAKE2b-256 ce1a136c19167b5d5d7291f9e71d3a9da2ee1720a51f606e496a82d82ce76eb9

See more details on using hashes here.

Provenance

File details

Details for the file memray-1.4.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for memray-1.4.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 1422f44ebcb644d5b908f1d570bba7e638dd82ce9297b2c9c4f2dcfa871b9002
MD5 776685354d041def901d3fe36c14de06
BLAKE2b-256 134420fbfc5f3389a5bafe49f6570bd7170a6592df3c17550c091d8dc82ebe7c

See more details on using hashes here.

Provenance

File details

Details for the file memray-1.4.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for memray-1.4.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 97e25f01bcefc9b7de44250312fedf8c1a376a58c448567aca306ae9fed390af
MD5 80be2ec2e50deac3975193af01160730
BLAKE2b-256 520abbec23beaa53892d904f0124e36a8930329948569ca1a0a3e99e3ee951e3

See more details on using hashes here.

Provenance

Supported by

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