Skip to main content

Log memory usage during tests

Project description

pytest-memlog

Continuously logs the memory usage of your test session.

Memlog graph of the example tests

Installation

pip install pytest-memlog

Usage

Use --memlog to enable the plugin.

By default, memory usage of a test run will be logged to memlog.json.

Options

  • --memlog-path: The path to save the log to, defaults to memlog.json.
  • --memlog-interval: Measurement interval, defaults to 0.1 seconds.
  • --memlog-warmup: Memlog will capture memory usage for this many seconds before starting your tests. Defaults to 0.

Markers

  • limit_memory(memory): Will mark a test as failed if the program memory exceeds this number during a test run. Note that due to garbage collection, this does not necessarily reflect memory usage in a specific test.

Implementation

pytest-memlog uses a separate process to track the memory of the test process. This allows for a very low overhead, as the only data passed between the processes are test names & the maximum memory usage during a test.

The memory logging is done at fixed intervals (given by --memlog-interval) and saved to a JSON log. Each log entry is of the following form:

    {
        "rss": 40939520,
        "time": 1814626.921,
        "name": "tests/test_basic.py::test_0"
    }
  • rss is the used memory, in bytes.
  • time is the value from time.monotonic(). You'll probably want to normalize this when analyzing.
  • name is the name of the current running test, or an empty string between tests.

Analysis

The visualization at the top was generated using the data from our examples.

You can see how in the sample notebook or view it live.

To generate the log for the examples run:

pytest --memlog ./examples/

Or use it on your own tests!

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

pytest_memlog-0.1.0a1.tar.gz (5.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pytest_memlog-0.1.0a1-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file pytest_memlog-0.1.0a1.tar.gz.

File metadata

  • Download URL: pytest_memlog-0.1.0a1.tar.gz
  • Upload date:
  • Size: 5.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for pytest_memlog-0.1.0a1.tar.gz
Algorithm Hash digest
SHA256 40f835763a08d8edb9b1745fbc4cb09f012ab29217da89f6f83a74d348bfba10
MD5 748cecccbe29621bca4191c6c2c3ee0e
BLAKE2b-256 18048c2b72e9e1b22d875768f7de5178378ddc879e5c1d879fc147bbdaa5c2d6

See more details on using hashes here.

File details

Details for the file pytest_memlog-0.1.0a1-py3-none-any.whl.

File metadata

File hashes

Hashes for pytest_memlog-0.1.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 f66dfa142d67ea7357bdb44b1ff30bfe56d5966456f890ae6189052f4da772bd
MD5 d2cd30068aef08dbf00fe49014890ab7
BLAKE2b-256 24fff662dda26f2f6bfc7dd50d03a6abee02ae2ec028aa495e862ac7c637c0c9

See more details on using hashes here.

Supported by

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