1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374
|
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">
<title>Memray: the endgame memory profiler</title>
<!-- Bootstrap core CSS -->
<link href="/usr/share/javascript/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<!-- Custom styles for this template -->
<link href=" {{ pathto('_static/css/custom.css', 1) }}" rel="stylesheet">
<style>
.m-intro:before {
background-image: url("{{pathto('_static/images/circle_inner_opt.png', 1)}}");
}
.m-intro:after {
background-image: url("{{pathto('_static/images/circle_outer_opt.png', 1)}}");
}
</style>
<link rel="icon" href="_static/favicon.ico">
</head>
<body>
<header>
<nav class="navbar navbar-expand-md fixed-top">
<div class="navbar-brand">
<img src=" {{ pathto('_static/images/logo.png', 1) }} " style="height: 2rem;" alt="Memray logo">
</div>
<div class="navbar-light bg-light">
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavDropdown"
aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
</div>
<div class="collapse navbar-collapse" id="navbarNavDropdown">
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link" href="{{ pathto('overview') }}">Documentation</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{ pathto('getting_started') }}">Getting Started</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink3" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false">
Try for yourself
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink3">
<a class="dropdown-item" href="{{ pathto('tutorials/index') }}">Tutorials</a>
<a class="dropdown-item" href="{{ pathto('examples/README') }}">Examples</a>
</div>
</li>
<li class="nav-item">
<a class="nav-link" href="https://github.com/bloomberg/pytest-memray">Pytest plugin</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink2" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false">
Community
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink2">
<a class="dropdown-item" href="https://github.com/bloomberg/memray">Github</a>
<a class="dropdown-item" href="https://pypi.org/project/memray/">PyPI</a>
<a class="dropdown-item"
href="https://github.com/bloomberg/memray/discussions">Discussions</a>
</div>
</li>
</ul>
</div>
</nav>
</header>
<main role="main">
<section class="splash text-center">
<div class="m-intro">
<div class="splash-container" style="z-index: 2;">
<img class="splash-image" src=" {{ pathto('_static/images/logo.png', 1) }} " alt="<Memray logo">
<div class="typewriter_container">
<h1 class="lead typewriter"><b>The endgame Python memory profiler</b></h1>
</div>
<p class="lead text-muted">
Memray tracks and reports memory allocations, both in Python code and in compiled
extension modules.
</p>
<p>
<a href=" {{ pathto('getting_started') }} "
class="btn btn-primary filled-memray btn-lg">Documentation</a>
<a href="https://github.com/bloomberg/memray/discussions"
class="btn btn-secondary btn-lg">Community</a>
</p>
<div class="mouse"> <span></span> </div>
</div>
</div>
</section>
<!-- Marketing messaging and featurettes
================================================== -->
<!-- Wrap the rest of the page in another container to center all the content. -->
<div class="container marketing">
<hr class="featurette-divider">
<!-- Three columns of text below the carousel -->
<div class="row">
<div class="col-lg-4">
<img class="rounded-circle rounded-header-image"
src="{{ pathto('_static/images/mandelbrot_operation_native.png', 1) }}"
alt="Flame graph screenshot" width="140" height="140">
<h2>See where it happens</h2>
<p>
Memray knows the stack trace of every single allocation that happens in your code, no
matter how small it is. This lets you see exactly where your memory is being
allocated and gives you insights on how to optimize your code.
</p>
<p><a class="btn btn-secondary filled-memray" href="{{ pathto('flamegraph') }}" role="button">View
details »</a></p>
</div><!-- /.col-lg-4 -->
<div class="col-lg-4">
<img class="rounded-circle rounded-header-image"
src="{{ pathto('_static/images/summary_example.png', 1) }}" alt="Summary reporter screenshot"
width="140" height="140">
<h2>More than just a profiler</h2>
<p>
Memray does much more than just telling you where your application is spending
memory and which memory is being leaked. For instance, it can help you find wasteful
temporary allocations that you can avoid to speed up your program.
</p>
<p><a class="btn btn-secondary filled-memray" href=" {{ pathto('temporary_allocations') }} "
role="button">See how »</a></p>
</div><!-- /.col-lg-4 -->
<div class="col-lg-4">
<div style="width: 140px; height: 140px;"></div>
<h2>Prevent regressions</h2>
<p>
You can easily integrate Memray into your pytest test suite. Learn where each test is
spending its memory with per-test allocation summaries with useful statistics, or set
limits on how much memory each test is allowed to use to prevent memory regressions!
</p>
<p><a class="btn btn-secondary filled-memray" href="https://pytest-memray.readthedocs.io/en/latest/"
role="button">Discover the plugin »</a></p>
</div><!-- /.col-lg-4 -->
</div><!-- /.row -->
<!-- START THE FEATURETTES -->
<hr class="featurette-divider">
<div class="row featurette">
<div class="col-md-7">
<h2 class="featurette-heading">Native allocation tracking. <span class="text-muted">No more leaks
in C extensions.</span></h2>
<p class="lead">
Memray sees allocations made by C/C++/Rust libraries.
This means that when you use Memray to profile your
Python code, you'll be able to see the entire call
stack, including any calls to C/C++/Rust functions. This can
be incredibly useful for tracking down memory issues, as
it allows you to see exactly where and how memory is
being allocated. Whether you're working
on a complex project with many layers of code, or simply
trying to optimize your Python scripts for better
performance, Memray is an invaluable tool that can help
you understand and improve your code's memory usage.
</p>
</div>
<div class="col-md-5">
<img class="featurette-image img-fluid mx-auto reveal_l"
src="{{ pathto('_static/images/native_mode_debug.png', 1) }}" alt="Native mode tracking">
</div>
</div>
<hr class="featurette-divider">
<div class="row featurette">
<div class="col-md-7 order-md-2">
<h2 class="featurette-heading">Catch it as it happens! <span class="text-muted">Live memory
profiling.</span></h2>
<p class="lead">
One of the standout features of Memray is its ability to
provide a live, real-time view of memory allocation.
With the live mode, you can see exactly how memory is
being used as your Python code is executing. This can be
particularly useful for debugging and optimizing your
code, as you can see in real-time how different parts of
your code are impacting memory usage.
</p>
</div>
<div class="col-md-5 order-md-1">
<img class="featurette-image img-fluid mx-auto reveal_r"
src="{{ pathto('_static/images/live_animated.webp', 1) }}" alt="Live mode">
</div>
</div>
<hr class="featurette-divider">
<div class="row featurette">
<div class="col-md-7">
<h2 class="featurette-heading">One log, many analyses. <span class="text-muted">
There's a reporter for everyone!</span></h2>
<p class="lead">
One of the great things about Memray is its flexibility
and customizability. After running a memory profiling
session, you can use a wide range of reporters to view
the data in different ways. For example, you can use the
flamegraph reporter to see a visual representation of
the call stack and how memory is being used at each
level. Or, you can use the statistical reporter to see
summary statistics and trends in your memory usage.
And these are just a few of the many reporters available
in Memray - there are many more to choose from, allowing
you to view your data in the way that makes the most
sense for your specific needs.
</p>
</div>
<div class="col-md-5">
<img class="featurette-image img-fluid mx-auto reveal_l"
src="{{ pathto('_static/images/stats_example.png', 1) }}" alt="Many reporters">
</div>
</div>
<div class="row featurette">
<h2 class="featurette-heading">Memray in the media</h2>
<div class="row">
<br>
<div class="card-container">
<div class="card-columns">
<a href="https://news.ycombinator.com/item?id=31102089" class="card">
<div class="card-body">
<h5 class="card-title">Memray: a memory profiler for Python</h5>
<h6 class="card-subtitle mb-2 text-muted">Hacker News - 2022-04-20</h6>
</div>
</a>
<a href="https://pythonbytes.fm/episodes/show/282/dont-embarrass-me-in-front-of-the-wizards"
class="card">
<div class="card-body">
<h5 class="card-title">#282: Don't Embarrass Me in Front of The Wizards</h5>
<h6 class="card-subtitle mb-2 text-muted">PythonBytes (podcast) - 2022-05-03</h6>
</div>
</a>
<a href="https://sdtimes.com/softwaredev/sd-times-open-source-project-of-the-week-memray/"
class="card">
<div class="card-body">
<h5 class="card-title">SD Times Open-Source Project of the Week: Memray</h5>
<h6 class="card-subtitle mb-2 text-muted">SD Times - 2022-05-06</h6>
</div>
</a>
<a href="https://devclass.com/2022/05/12/core-dev-memray-memory-profiler/" class="card">
<div class="card-body">
<h5 class="card-title">New Memray memory profiler tracks both Python and native code
</h5>
<h6 class="card-subtitle mb-2 text-muted">DevClass - 2022-05-12</h6>
</div>
</a>
<a href="https://blog.opensource.org/memray-project-showcases-why-bloomberg-is-an-open-source-first-company/"
class="card">
<div class="card-body">
<h5 class="card-title">Memray project showcases why Bloomberg is an ‘open source
first’ company</h5>
<h6 class="card-subtitle mb-2 text-muted">Voice of Open Source - 2022-05-17</h6>
</div>
</a>
<a href="https://www.datanami.com/2022/05/18/memray-shines-a-light-on-python-c-c-memory-problems/"
class="card">
<div class="card-body">
<h5 class="card-title">Memray Shines a Light on Python-C/C++ Memory Problems</h5>
<h6 class="card-subtitle mb-2 text-muted">Datanimi - 2022-05-18</h6>
</div>
</a>
<a href="https://console.substack.com/p/console-107?s=r" class="card">
<div class="card-body">
<h5 class="card-title">#107 -- Interview With Pablo of Bloomberg about Memray</h5>
<h6 class="card-subtitle mb-2 text-muted">Console - 2022-05-29</h6>
</div>
</a>
<a href="https://realpython.com/podcasts/rpp/128/" class="card">
<div class="card-body">
<h5 class="card-title">Episode 128: Using a Memory Profiler in Python & What It Can
Teach You</h5>
<h6 class="card-subtitle mb-2 text-muted">The Real Python Podcast - 2022-010-7</h6>
</div>
</a>
<a href="https://tryolabs.com/blog/2022/12/26/top-python-libraries-2022" class="card">
<div class="card-body">
<h5 class="card-title">Top Python libraries of 2022</h5>
<h6 class="card-subtitle mb-2 text-muted">Tyro Labs - 2022-012-26</h6>
</div>
</a>
<a href="https://www.dice.com/career-advice/developer-qa-pablo-galindo-talks-pythons-speedy-future"
class="card">
<div class="card-body">
<h5 class="card-title">Developer Q&A: Pablo Galindo Salgado Talks Python's Speedy
Future</h5>
<h6 class="card-subtitle mb-2 text-muted">Dice - 2022-01-05</h6>
</div>
</a>
<a href="https://www.reddit.com/r/Python/comments/u84tjr/bloomberg_just_open_sourced_memray_a_memory/"
class="card">
<div class="card-body">
<h5 class="card-title">Bloomberg just Open sourced Memray a memory profiler for
Python</h5>
<h6 class="card-subtitle mb-2 text-muted">Reddit - 2022-04-20</h6>
</div>
</a>
<a href="https://newsletter.researchcomputingteams.org/archive/research-computing-teams-119-23-apr-2022/"
class="card">
<div class="card-body">
<h5 class="card-title">Research Computing Teams #119, 23 Apr 2022</h5>
<h6 class="card-subtitle mb-2 text-muted">Research Computing Teams - 2022-04-23</h6>
</div>
</a>
<a href="https://console.substack.com/p/console-102?s=r" class="card">
<div class="card-body">
<h5 class="card-title">Console #102 -- Snapdrop, Memray, and Headless Recorder </h5>
<h6 class="card-subtitle mb-2 text-muted">Console - 2022-04-24</h6>
</div>
</a>
<a href="https://www.infoq.com/news/2022/04/bloomberg-memray-python-profiler/" class="card">
<div class="card-body">
<h5 class="card-title">Bloomberg Open-Sources Python Memory Profiler Memray</h5>
<h6 class="card-subtitle mb-2 text-muted">InfoQ - 2022-04-26</h6>
</div>
</a>
<a href="https://thestack.technology/memray-python-memory-profiler-bloomberg/" class="card">
<div class="card-body">
<h5 class="card-title">Check your Memray: Bloomberg open sources tool for Python
apps</h5>
<h6 class="card-subtitle mb-2 text-muted">The Stack - 2022-04-29</h6>
</div>
</a>
<a href="https://www.marktechpost.com/2022/04/30/bloomberg-open-sources-memray-a-memory-profiler-that-can-track-memory-allocations-in-python-code-in-native-extension-modules-and-python-interpreter/"
class="card">
<div class="card-body">
<h5 class="card-title">Bloomberg Open-Sources Memray</h5>
<h6 class="card-subtitle mb-2 text-muted">Market Tech - 4/30/22</h6>
</div>
</a>
</div>
</div>
</div><!-- /.row -->
</div>
<!-- /END THE FEATURETTES -->
</div><!-- /.container -->
<!-- FOOTER -->
<footer class="container">
<p class="float-right"><a href="#">Back to top</a></p>
<p> <a href="https://github.com/bloomberg/memray">GitHub Page</a> · <a
href="https://github.com/bloomberg/memray/blob/main/LICENSE">License</a></p>
</footer>
</main>
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="/usr/share/javascript/jquery/jquery.min.js"></script>
<script src="/usr/share/javascript/bootstrap/js/bootstrap.min.js"></script>
<!-- Custom JS -->
<script src="{{ pathto('_static/js/custom.js', 1) }}"></script>
</html>
|