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

Uploaded Source

Built Distributions

memray-1.4.1-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.1-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.1-cp311-cp311-macosx_11_0_arm64.whl (678.7 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

memray-1.4.1-cp311-cp311-macosx_10_14_x86_64.whl (637.7 kB view details)

Uploaded CPython 3.11 macOS 10.14+ x86-64

memray-1.4.1-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.1-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.4.1-cp310-cp310-macosx_11_0_arm64.whl (680.3 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

memray-1.4.1-cp310-cp310-macosx_10_14_x86_64.whl (641.9 kB view details)

Uploaded CPython 3.10 macOS 10.14+ x86-64

memray-1.4.1-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.1-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.4.1-cp39-cp39-macosx_11_0_arm64.whl (681.4 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

memray-1.4.1-cp39-cp39-macosx_10_14_x86_64.whl (642.9 kB view details)

Uploaded CPython 3.9 macOS 10.14+ x86-64

memray-1.4.1-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.4.1-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.1-cp38-cp38-macosx_11_0_arm64.whl (698.3 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

memray-1.4.1-cp38-cp38-macosx_10_14_x86_64.whl (658.6 kB view details)

Uploaded CPython 3.8 macOS 10.14+ x86-64

memray-1.4.1-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.1-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.1.tar.gz.

File metadata

  • Download URL: memray-1.4.1.tar.gz
  • Upload date:
  • Size: 958.6 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.1.tar.gz
Algorithm Hash digest
SHA256 afae6056a12260d4411a862d235f62b6607b46bcd08ba455d3f1eaba7f323450
MD5 3ab4fd96c6d8519e60de93e0a10ea87e
BLAKE2b-256 66643d24b1e3b319418394fd11e8e0500326cb814590e2cfc2f3624b69bff54a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9874ca3383a73b63f75e450e98a12084984f739729200e3ba3b2dc323ea245e7
MD5 dc782c5e3ed17b00677178f341411aa4
BLAKE2b-256 cc9d4cc54aa1163d75ab6bd4b34114d90bf829b5f9687aa935d6b5c2e6ce2c37

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.4.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 5b5d6d50c406eeb42b369b0a41cd81b130246e1b6c4b99fdc72d9d3b78830202
MD5 0073fc7565ff62f5a8c88063adb6e141
BLAKE2b-256 f28aabe37edbb0058810e088e21f1edeffc7085ee76fe8d866fd5ff7074c91e4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.4.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 449d1cc93a5e589357c9cf319f84bd30b47e2ab0b2c6d52285ec35eeb72108c6
MD5 03e52dd2392a6364ffd3235a73751131
BLAKE2b-256 f6997996ce4963116a07d9b6fb2a5644028e0ba73177e4e40bdb3d954c4f425f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.4.1-cp311-cp311-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 bac4835b742aa2d9f3df0e26b88b515bdf45279fbdc2f82c96431c6f2efd1405
MD5 0d4a244633a248c12345f2fad725defa
BLAKE2b-256 b347f7cb4ef64693ebb42d00d01d267a31abd86ebfe9e813ff2bba1b11ef8593

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.4.1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 6727cb477cbd3011f2ba41b0b6cbeeb9a9a8faf526af738edc48c7cd255d217d
MD5 62e1b5fafa87925ab516f7f9d30b7983
BLAKE2b-256 bbe12558c8a62cd2c166547f184dbf6f68facb4e3bcdfe960874c202a671ca37

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.4.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 835e038677e68ba84ec1226ba71c9b8df5f0d261aa7760c26963e11f6e09e2c3
MD5 3957c60a498faa26a2a8349472b17760
BLAKE2b-256 927733ac7aa94c0a014f3e230814d3f1ec7ffbd31f21d5ad0fbf55afe1f18cac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.4.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4520a8e01067a3d0077ed32be2ae9e9fb0222cf177713db673151373984fa067
MD5 e46277e7a565327a799afb3b509fc7ba
BLAKE2b-256 a4ec711f6def5aa5563fc82e61da34fccaf1d289d53c8dcf6b42ac95d267ad5c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.4.1-cp310-cp310-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 a5329dceb805134bef685a1c338d75fe7e0dcf307f6952cd518472c7406feaef
MD5 d2eae79ce21f8efbada3f73b17db087e
BLAKE2b-256 2e7c7ead8feb4bed0427e6c9a57cb7bf3fbfbf056743f121340f9a0043cd6236

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.4.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 40d7ce415e48990deba70a5e0e3da45dd3c2ec5cb13fcbd66918371d1d47bae6
MD5 62a2db5ed308bec298ab317ebf2f9d0a
BLAKE2b-256 a37b2e6af2e22fe19482798c59f5f425115b751fb53aaed6b0cdeff5db77bcae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.4.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 aa0f52a5c30308bba4e81c78cbfe2981db181ce65f44cac609c9a2cfb0117d6e
MD5 25cd410a8e48f0ccbed3450e9f8510c6
BLAKE2b-256 86e3ee694f1f6e89671cd8630963990396c0ce7570f3e337afa70c250f954bb1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.4.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3ef4ffc3a78c1e00888b5766ad693c30f692694b62a6349e4593b8f5655c4bb7
MD5 df6edcd5b022545a3b88eb6fae37ee19
BLAKE2b-256 5a6cc235cc50cbe6ec0df573c4da09b7cc40f7deb4fda3556041b1ff054b969a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.4.1-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 c38dedfc5a75b15a02e121bed8eae8333eed9ae9dbcbae50489b3d9ab6a04e5b
MD5 3a4b1f535c0c1f2af37fd8add402798c
BLAKE2b-256 87f0e1dacd76f255ed41bdea8e90c70745d14e030bf4abc58d691b69c9fd82fc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.4.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 b2bb4e7172f0cb60364d23280b85436a25020616a3ce32667156538eebcdefac
MD5 74bf7550b000f1e0af0d427cad923079
BLAKE2b-256 a8b208d8aa3595ab9a52065116a3b352859f5e801b5c68ceba2733f8a5af5715

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.4.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 9a3a83ecef10efb7b5af0a7f97f60cd9c24c589bbe6693e4dd0efd01ec9d19e4
MD5 d3cfb633cf22feeffd49958ade74f0da
BLAKE2b-256 aa16a8a8e39d3a8bffba13586da4b48e92b960895e7a0a43238d7f233508c60c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.4.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f0d35654227e840da338c1a1b4bf64b8ec47533de84d08787f4cc19b94acf3a1
MD5 0a0c5f67bc27126ecf0f4ef1ff28e254
BLAKE2b-256 274acd41ca5ecacf1bbc2cb457bbef2f2df5fecf396c1e60da9b28cf036858eb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.4.1-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 417451084e826040f42517accaa11b468fb70b0816a44156d567af9e04aa8e0a
MD5 c3816c864c97487de4736cbbd3420986
BLAKE2b-256 02cb429181e97aa3b30ad7d3410a15e45caf0e83c78f456fb84facf1887ee16c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.4.1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 e83c25ec3643bded948a264969197b60cce45c69464d431d36859d71ed31db3f
MD5 c1f4cf9a4bb29fa479d4e2997e8896d3
BLAKE2b-256 d7db7b89dd05ef37c8da2ca7f97b46b8e42ffecd33607873c40d7a8b8cd3372c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.4.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 a4dfb8466ab929a8ec2925124b4251545e50470027330e6d83791a2e97181473
MD5 e7422faa43940a7c3907b1120c62a477
BLAKE2b-256 20c3763e6a1e6590e3ea93d6cb090889b5a7f40dab6bef4131bb3cc940eced4b

See more details on using hashes here.

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