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.7.0.tar.gz (1.0 MB view details)

Uploaded Source

Built Distributions

memray-1.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

memray-1.7.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (4.2 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

memray-1.7.0-cp311-cp311-macosx_11_0_arm64.whl (761.1 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

memray-1.7.0-cp311-cp311-macosx_10_14_x86_64.whl (722.2 kB view details)

Uploaded CPython 3.11 macOS 10.14+ x86-64

memray-1.7.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.12+ x86-64

memray-1.7.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl (3.2 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.12+ i686

memray-1.7.0-cp310-cp310-macosx_11_0_arm64.whl (764.1 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

memray-1.7.0-cp310-cp310-macosx_10_14_x86_64.whl (726.4 kB view details)

Uploaded CPython 3.10 macOS 10.14+ x86-64

memray-1.7.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.12+ x86-64

memray-1.7.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl (3.2 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.12+ i686

memray-1.7.0-cp39-cp39-macosx_11_0_arm64.whl (765.0 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

memray-1.7.0-cp39-cp39-macosx_10_14_x86_64.whl (727.0 kB view details)

Uploaded CPython 3.9 macOS 10.14+ x86-64

memray-1.7.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64

memray-1.7.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl (3.2 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ i686

memray-1.7.0-cp38-cp38-macosx_11_0_arm64.whl (784.3 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

memray-1.7.0-cp38-cp38-macosx_10_14_x86_64.whl (745.3 kB view details)

Uploaded CPython 3.8 macOS 10.14+ x86-64

memray-1.7.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (3.2 MB view details)

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

memray-1.7.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl (3.3 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ i686

File details

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

File metadata

  • Download URL: memray-1.7.0.tar.gz
  • Upload date:
  • Size: 1.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.2

File hashes

Hashes for memray-1.7.0.tar.gz
Algorithm Hash digest
SHA256 cc3b114d24828edaafc31bc19effb90530e7df38e37f100a0f6f03a2584976d4
MD5 c0d1867183f3b27bc7739aa7d9af8a5c
BLAKE2b-256 e65231a66a3d3ee2c618f5f7a9e78ff638995b1e62ff57bd7a46a14f47807eb8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f6caa30fab38fb512278e637de2ccc503d6edafec3e8ad840c2876dcd15060e6
MD5 7c0eb1632d4b2d21d3f089eed5612cf9
BLAKE2b-256 12031da4d1f8b3fa22d2e82c8a8647c36d861a9ab7f3869fc84fe1bced146955

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.7.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 6f3b239309a10fcf8d48b0f4e444d0d51846cacd44bf12125c46e458887d0b21
MD5 4d8180e9db7c79b93ca9adbeaf82afaf
BLAKE2b-256 b8b735a71a47776eb14cbff30781c51600cb3fa18f485befffb4e53f77c3cc51

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.7.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 df3da7c0291ee93815d97532cd9498d9410f8848ca00a3001ff676edb35f85eb
MD5 aa61ca79cceccdd9094a98e120bcd2d6
BLAKE2b-256 aae83bd42a40c514d01bd140d1989b8dd96a0ef9aa56e0d1174b0d9852f49224

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.7.0-cp311-cp311-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 7571c1ba6e70249d81731b7d48d7e8c380ea84fc812df850ce783c906b9cff68
MD5 0547a4f10046e3196e3f36d0716832c7
BLAKE2b-256 e458317b38e0e70b1ee7f8efb032ef276d0b7f37a670b369d075e3a5b395b94f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.7.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 e9a79389d1b75b27073db661f0a8add700540f08d6ab359d8714850c4edd0854
MD5 df6f7209dd820e747d3e3b6e4bc16bfc
BLAKE2b-256 217941da5bfb92dd57a1059aa2e9b821e3c3861cd6773746ec8489f4594e21e1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.7.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 6c69636e423a7acd20d2d8ab21d992dbb2ca78db48221438ea7ebfcbcc7f323c
MD5 7a25844f2a8cc8537192f80431b06785
BLAKE2b-256 659fd874bacd41258b9473224f0c217a40cb11eee10dbc855dc9848da93de8b2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.7.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9a1b9c11e2dd34594a20764228f281599eb2191f1e52944eb3ec44d4c0e9d5fd
MD5 375b3f5e8433a30e0b3e1a2fdbaf6c6d
BLAKE2b-256 57650f6ffa9ed81ce1a788b97eac81b4c1edfd584d0d559768457fcb40109448

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.7.0-cp310-cp310-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 0de3b27e1bbea325794b6dff276d3ce9081b6e1c485836e9fe271c4691bd8523
MD5 e7af41c1cd533700e07600a3aa358552
BLAKE2b-256 a0006d46f376378ebd9cfdebc60809c49b4f77ff2f85e683aab89c288560ede4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.7.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 ed9e35ad16421f01ea6ddadbeeb8a6e260d830edbce2b4d4066e8ef24a429cc7
MD5 5a73e93055f004cd6ea04cf5299c3f17
BLAKE2b-256 829943b3b88b7bb32297c05fd7bc27cd66b58339317c74eca07a0faa229c6a01

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.7.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 43ece36d2235558defae1912de8f12bf1e6bbfbf635fc19ac1c211488c22bd32
MD5 4a2632f4b592d3c44d99fb2a6ba62bb5
BLAKE2b-256 dbd987583329e626b7ff3a1bf86230f5fb2c016efee7a283e0dc3fd6ce5eb98d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.7.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 22ad635849243b7059b60996a9c159de182f12dd2012161943131a01118e1a0f
MD5 ea1f95c6798678c4ae99fe275f1dcef6
BLAKE2b-256 26dceb05fd3838284b6ba24c64a6fc7f39f9cac6370c5c36f5b699ec0e55b001

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.7.0-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 c5eeb74f75bfc8560c0f5c3911cd3a2c55c852a048b35fab8fc12c5f7f1f5cd8
MD5 fe88720cf510944d2eb11fa7b0fc6053
BLAKE2b-256 fd9f13468289499946d5b8fee2d0d9d2e937c416a744fd388ad4446447d1264a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.7.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 0756988f68d49a13b07b52bab7d9bdf6ab3dc52b0590e54f37172072bbb45d3b
MD5 da773a5041399adeb1a1ba03578061df
BLAKE2b-256 105ba1f8ea930e05cc4617cf9ed4d334db0e2a6e9cd6dd4957a0151115ab9c97

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.7.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 e8acd651712c6e18a78bae187cc694229dbaa56b3584a4d525019dff53b81d00
MD5 ef2f4214424749ce2b6b27446fd9bd1d
BLAKE2b-256 405b1e2b1a3cfaffd79437e1e4cf01d7c059ed8bdf3168ae927fd6f3caf5ccaa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.7.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7812ba658b308eed384e1c132694bc285709fe72704e829be3d5a54e1054d95f
MD5 d10d85b6f3a74cb30af42e5679eee8ff
BLAKE2b-256 976f9cc9279dccf0d6af4e5e4c5653ed626fcb6e8c83c57ff8610dabd1a13709

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.7.0-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 7a3192523db97b63be964e85d161e398906533d22450c594489f4837e610c54b
MD5 e9f6efb9d72fee02bea6c24c12eb753f
BLAKE2b-256 316bec0918ddca43e00000e7675e5c0b64eff71be4948254d4c9b60e027e0ef5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.7.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 29c62eb9d81617eaa933d303b3cf91a5e4ea891805a6c692f5a7c970b43e6929
MD5 0e8409d59d16cfaa29227852112eff45
BLAKE2b-256 f3b9e86bae30b4aaa01eba6bc7ff43577a3bf3325914177b0371a2f1f6adcf31

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.7.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 b27f012773bebeeecde9e7a605503e9c0ffb74d9f08e96eea55758d3f9598baf
MD5 e5341f0c31265be8c50c4b286f169cb1
BLAKE2b-256 7e048423b173ec1019b0c6edee293065d116717fd44ff5a794f9401a123a7795

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