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.5.0.tar.gz (965.5 kB view details)

Uploaded Source

Built Distributions

memray-1.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

memray-1.5.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.5.0-cp311-cp311-macosx_11_0_arm64.whl (690.6 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

memray-1.5.0-cp311-cp311-macosx_10_14_x86_64.whl (647.9 kB view details)

Uploaded CPython 3.11 macOS 10.14+ x86-64

memray-1.5.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.12+ x86-64

memray-1.5.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl (2.9 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.12+ i686

memray-1.5.0-cp310-cp310-macosx_11_0_arm64.whl (692.1 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

memray-1.5.0-cp310-cp310-macosx_10_14_x86_64.whl (652.1 kB view details)

Uploaded CPython 3.10 macOS 10.14+ x86-64

memray-1.5.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.12+ x86-64

memray-1.5.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl (2.9 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.12+ i686

memray-1.5.0-cp39-cp39-macosx_11_0_arm64.whl (693.7 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

memray-1.5.0-cp39-cp39-macosx_10_14_x86_64.whl (653.1 kB view details)

Uploaded CPython 3.9 macOS 10.14+ x86-64

memray-1.5.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (2.9 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64

memray-1.5.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl (3.0 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ i686

memray-1.5.0-cp38-cp38-macosx_11_0_arm64.whl (709.5 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

memray-1.5.0-cp38-cp38-macosx_10_14_x86_64.whl (669.1 kB view details)

Uploaded CPython 3.8 macOS 10.14+ x86-64

memray-1.5.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (3.0 MB view details)

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

memray-1.5.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl (3.0 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ i686

File details

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

File metadata

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

File hashes

Hashes for memray-1.5.0.tar.gz
Algorithm Hash digest
SHA256 2c2a1a6715f489e2780d110cfe4f6bb779658f000ca737483dde79f99d0dae12
MD5 ff9074c7527d5dce4cbe7e983ff21261
BLAKE2b-256 64429e1fae15967417149c2c8ba98ca1db0b4cd6b37e155d5849964047fa1396

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for memray-1.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ecdd892fe236bddb31ad80853cdddd8065ddca7cdc0515e669aea970f41b045f
MD5 e5a19eaf682874b040b37e09d8fe99f4
BLAKE2b-256 17d749905a56f2bb93b88dd331f8290f08153ec029454f879c592aa3777d6150

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for memray-1.5.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 5ebb454b3fc63d21951c0c0caefa39c0b5291b4b9c078d58859a632984c54c32
MD5 2e971fd3e2770f5fac6bdedf76fc4533
BLAKE2b-256 62f8b8d5551a0c857e78a0e9a33b65aad3223f426417f61f3c0337be7c4f0700

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for memray-1.5.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 598bd3f4d155e993e4085571f1bdebf1765c32d9967d16e38ace0f00c424a789
MD5 1d81438f3d8de95681e6f7bc127ebd28
BLAKE2b-256 885d390518e0dac7981c3274d4f7dacb692220a02598772692f52490dcdf6cff

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for memray-1.5.0-cp311-cp311-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 f57d7a6e9662e9b8549ead448b0726c4e97e6e4dbe7fa5f76b21f08cfbd96798
MD5 fa186400dda9efa6eb0ef48334f95df5
BLAKE2b-256 f07e6c60719025095f380f6867e7aa816476cf8e4e0cd70974d89f985e8a2b3a

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for memray-1.5.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 4a60fdb1b9d8b0265a3d3e52e9a7a638dc89223ac7a976f5aad8b316685492bd
MD5 dc16201945ea90c298a5edd852e0812e
BLAKE2b-256 57e255b719a99b13eb9954728cbf1e4c43c7d3ce762623f00c7e65ad129d992f

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for memray-1.5.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 981fc578766b61f33a966187eedaba8fc3c943547059862a12393118aad31387
MD5 ec74f11e410603270d5f32c3ae45e7b9
BLAKE2b-256 aa892d59d7f28e99463081dba81c1b245da1e15b39ac9f73e2946ce55233b52b

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for memray-1.5.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5a846ab9ad113531d4aae1daa4f33f9060f769bd4baf975610bd81771e7a40e2
MD5 541291839fb856f5166919b0bcb916ab
BLAKE2b-256 49b1dfa9cad0ab333ce1e48f6c962089155380ca4c88d837da7139473977efc4

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for memray-1.5.0-cp310-cp310-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 20103313ebaf984f5f02568b4d7e15ff2050f685911c8a6513378576ffbc805f
MD5 791582d50c346b7297de8c5fe64e9036
BLAKE2b-256 5e45198d13ae6a1b4a8f41d936c2ac8001cbbdcd4a6ea4aa788031d8fe4b8c59

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for memray-1.5.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 092e8a1fd120087f6e073a4f10c39ccdd4d73d98a3f19c9f51694329888eaf21
MD5 cb52dd834dc0eebc8624a216ed03c1c9
BLAKE2b-256 84ab09eaf29e2f01df809759bcb68c43dadc8dafda544f1da64c07f5ff5b8fbd

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for memray-1.5.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 52c6a73298e6ffa5c8304afd33f9f85dd827a10d2fd040f31c29146fd71db438
MD5 d060f39b76565367a566f6e38bf3c4a9
BLAKE2b-256 09123dadcf6922baf2422698f1bc8c7cf4d087069d84938689bca4ab3b8a94a1

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for memray-1.5.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ae33047088b8569965aee64e3ce8aa16092f847557a8f900f0e5a662789e4225
MD5 6f201dac0fae29bda1906561fa78ffef
BLAKE2b-256 4e47dd47c4f0b3a24080da42fa2ac2935cdb51be17c481057076ed816882093b

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for memray-1.5.0-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 76049c633c7280c4518f8b8e869ba422b98754b0795a2f79c12ee1749d15b702
MD5 e495e598e49896c2214e5ef21f85381a
BLAKE2b-256 b27ad84b0efae7f8c2c76158df0b9de1df08121684c7e21136ddb2b8c00d97b5

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for memray-1.5.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 fff91fe61fa448a5508ebc9c87c1eeaa1368d3a94df586e56a0f4cbf1e0dc204
MD5 2aa2d4f5b1d6b418dfa6143444a15a1f
BLAKE2b-256 6cc3804c1bd91d9a5d83099a007c599fb99407405c60e672688a4d77211ae2b5

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for memray-1.5.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 21993a1ae9819d5d434b792e4ead453d8edcb27cadf8dc236942be1e7062fced
MD5 3b13ff65145148cf2f64ef6100547fe1
BLAKE2b-256 4b8e696f3ed3fb2380d0796264f32133f41b65a5ad39100d15e2e3c5333f99af

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for memray-1.5.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cc3f62eb3ca40987c61066dece6f9d5f7d82c52a4bda8e85c51734cd7e1a0198
MD5 0d2a5f957640a5519391c177c9eb9a92
BLAKE2b-256 c20b55f9359776deb6367ec9d1554f9c8896924171104e293b0bed51a2b00f4a

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for memray-1.5.0-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 59b72717142cee554e237d8b93cea28c390b8c8fad7de2ce29db511dc2bc0ac4
MD5 3ef85157e1e7f8399800240ad865ce9d
BLAKE2b-256 265c6ddbf4ccb406dc8b3e1009c72c2660ab711c969fdf30a5ea171c75810382

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for memray-1.5.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 c6f7480ff3607d67632223f9e9529c2f3db445c2dfd5146d763fd1b68519c647
MD5 806324130e1c7d3caa816ed2df7ad613
BLAKE2b-256 b331d8d4b7f271cbe72d253016591a651f12fc6c2aa4c4c5eb7ddebfa5b1af20

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for memray-1.5.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 93ec9ab0b1a2d0528371d91b7508ae449a6e48e1fab1f9ad1649b098e3375ab9
MD5 71aee8dc929fdc86d1a9d67b99a3df08
BLAKE2b-256 4158997018773682f2254507f321e5dd2661dbd59486013d7fbf59029bedc22e

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