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

Uploaded Source

Built Distributions

memray-1.6.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.6.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (3.8 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

memray-1.6.0-cp311-cp311-macosx_11_0_arm64.whl (697.1 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

memray-1.6.0-cp311-cp311-macosx_10_14_x86_64.whl (654.9 kB view details)

Uploaded CPython 3.11 macOS 10.14+ x86-64

memray-1.6.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.6.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl (3.0 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.12+ i686

memray-1.6.0-cp310-cp310-macosx_11_0_arm64.whl (698.8 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

memray-1.6.0-cp310-cp310-macosx_10_14_x86_64.whl (659.3 kB view details)

Uploaded CPython 3.10 macOS 10.14+ x86-64

memray-1.6.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.6.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl (3.0 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.12+ i686

memray-1.6.0-cp39-cp39-macosx_11_0_arm64.whl (699.8 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

memray-1.6.0-cp39-cp39-macosx_10_14_x86_64.whl (659.9 kB view details)

Uploaded CPython 3.9 macOS 10.14+ x86-64

memray-1.6.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (3.0 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64

memray-1.6.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.6.0-cp38-cp38-macosx_11_0_arm64.whl (716.1 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

memray-1.6.0-cp38-cp38-macosx_10_14_x86_64.whl (676.1 kB view details)

Uploaded CPython 3.8 macOS 10.14+ x86-64

memray-1.6.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.6.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.6.0.tar.gz.

File metadata

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

File hashes

Hashes for memray-1.6.0.tar.gz
Algorithm Hash digest
SHA256 e22ad913c46f7402c1eb0ac0b3e61cac43f4f1411fb987da492a71403317e45f
MD5 5515d43294c1b7b7e7c70f3fc04e3352
BLAKE2b-256 3b04947db22d3e7244e66e38875f09e5abafc477dee9976c8d62071c8568567b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 232c9b7c64b57000c40cb859b9bd987f04044fb0758d255c3e7282f9c4bc28b0
MD5 8414ef21623a8a7db4d4b80be06e3a60
BLAKE2b-256 930981cca0d3c327625a914653ed34e1b8bd49f3762b8b68a3b46fdd28c497c2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.6.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 60e6c50861ade399ee26756c651e7f5f1105b3f1a64f63d6a0495edcc34d5242
MD5 0d6e52c45987313bef5c840236961eff
BLAKE2b-256 b79295bf78ec20f17898e518f6ecf1ff5379e921e711a2d949b4cb3016fdbc7d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.6.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4193b5109cb2ef057cedf4615277096050fc04efd02ac6628a08391e1b4b6d53
MD5 367315c409a37b85d3c42b0748fded7c
BLAKE2b-256 e62f7ed71a031b9246f4d0803dac2db4f7b7e5de3b24617c9d31da3deae6f916

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.6.0-cp311-cp311-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 3436c58ad132c8cf060a55cd7428fa13924a40c1cb22dfaaf2a9d68e06969289
MD5 526ef304847de12de7676340b78aa9cb
BLAKE2b-256 d9832c1076cfbb4f728f10c414dd1d5582c74c56d9acdda5c44679d491cefaa1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.6.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 e96cb195736ae8f16879c976849b1af01bb667bfdcead49598bf54b09e7f4e18
MD5 8d00d40f4a52a805e3a3eb95b718fd3b
BLAKE2b-256 716092739d4a9c5936d8abc06e1ba9751d09e801a9ab83de80175316e1344b5f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.6.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 d7547349cf56decff0686f87b766a1d81784b0b86b2a1013b12ee5c1236e2b41
MD5 040e51d2faa5961f7971a64f19b6b272
BLAKE2b-256 0b176ea83b350a3180a9e366b273289bea5027159818b8e69708c68fbbcb884e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.6.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2003a78b4f2725f69cf2f6d9fd7c81006639803d8904b6c4a089a3f48de6f1aa
MD5 723aad87d2f6b85ce6f1fa74d81ab8a5
BLAKE2b-256 fa15c4398ed9033d1fe042debb237d0c0ce059a0c3a922ecb7361e4289b50387

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.6.0-cp310-cp310-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 5de6ab0660c97c50c27333a6e4d7c41cf6ef43d8d17b173b7abd109800a9e235
MD5 d269d00edc81f74a62e07f046f35b235
BLAKE2b-256 80d5a23b123d80fc6874815fcb4ca42ecdfe0cbcd4c2bdeb20eb60cdab534195

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.6.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 21c17bae6969c58bdbe266b84cefb76992af1c79597c6af5ee147dcc742d7772
MD5 54bf0d9b4e427bfcf9ba12703585ce42
BLAKE2b-256 9fb35411f2a1162a78359da15473d0365e5b4d8d73bf61bf24b3d1497a739463

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.6.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 09f89ea9a61f965d51abdc76dee6929eccfba5e2dd21f6ddfd45ec23d3e4b6cb
MD5 4f7f581c23de1317318f5bd9d36d5ec9
BLAKE2b-256 10bb05af52e71ab5df3abf9bf8d54313f4e8186b7d60f635d7df5f3a37397ca0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.6.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 052fc4f47956b10f91b087543c2aafb858605d70b89907e439bf4949af9e6c37
MD5 fd4c4cf70a8369ba753f32917cd9ba80
BLAKE2b-256 f86f26268544854d409660d9f587f8f7c6e15dd3f7a2a3e3eedd41b3a8332dbe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.6.0-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 8673f7d90603f4b3b3e96f3a2f9943776c123867b00b161433c751beaf3a155f
MD5 edb4b2f10119543d65c549b9e4630c05
BLAKE2b-256 97a1d8cc5f6f86595ced1e1e719a52a95cc95381555a1d3b43c6cdc108e60e8b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.6.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 71dec332f2fdbfa550e15dbf82a7df2699a303a24a6da52d21ab1f3edec59bd1
MD5 598138da96ccebdc1a8b6f74b6a26a73
BLAKE2b-256 1225fde22710610f51a901d91c3ef79fa6513104cfbf9b50e35ff389ddf6ecad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.6.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 91e1d709771bd1b598dedf114cbcd128a06252a2da2192eb5270304264db62e8
MD5 0c9674ba12c68843fbab03874a0dc0d9
BLAKE2b-256 211fef5110470b8b537bff2218326614bcaee15c9a26f6f167bb33af0fbd95f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.6.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 63f96a94392e2bb80a1d3d0a10dcb9d6bbc697340d566a66717bffbf42f28310
MD5 3cee13ad4f19d9461138a4ea1f338f8c
BLAKE2b-256 25ac723ece0ce66e62e518759c4a8ff27186a7c43a1a59dd161de103b2d2e81f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.6.0-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 532b81e80d112a2035ef00e35774cc0f4a701c6fbd2955f546bbf10340d38627
MD5 23b75a27957ac8bbcf77a61f34eff620
BLAKE2b-256 3e1dee1940b35d485b10b7d0536955e68d9d32c79b50e195a72737b62c2d69de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.6.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 790b4c559765be716c1e4e073f547e7fc3b38e2fb23f43d24684cb2041e61cb4
MD5 b2dc98066e607f38a7c735efd0719fb0
BLAKE2b-256 8f1dfdefc29e2f3dd9d7fa84e76dc29499b3552073cadd59377c063ef46682e4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memray-1.6.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 32d8bf124c9e16f8eeefc00e0afae480e1a9a5ed8e194d23f075af5fcbb55348
MD5 2a314471cb0aaa03c43327a685c7b599
BLAKE2b-256 54dee3c00780cfed31cbd121fe9e08d5a999d21fc3db91ad4651858d26d042d8

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