Python Memory Management, Async Tools, and Security

·25m 39s
Shared point

Python Performance and Memory

Turning Off Garbage Collection

Instagram's Django deployment faced significant memory challenges, leading them to experiment with turning off the garbage collector. This move helped resolve memory issues linked to shared memory across processes.

"What they found was they were running many instances of the largest Django deployment on Python in the world."

To address long-term memory growth, Python 3.7 introduced GC Freeze. This feature allows applications to reach an idle state with shared objects and then freeze them, preventing the garbage collector from moving or cleaning them, while still managing memory for subsequent tasks.

Tools and Libraries

SpeechPy

This library is designed for speech processing and recognition, enabling developers to convert spoken words into representations suitable for machine learning systems. It also includes helpful tools for processing SciPy wave files.

PyBytes Code Challenges

A new platform offers self-contained coding exercises (20-60 minutes each) that can be solved directly in the browser. Solutions are verified using PyTest, providing a fun way to learn new techniques like using min with a key argument.

Dramatiq

Managing background tasks can be complex, but Dramatiq provides an easier alternative to Celery. It allows developers to offload tasks via simple decorators with robust defaults, supporting backends like RabbitMQ and Redis.

Software Design and Architecture

Controlling Async Creep

Asynchronous programming often leads to "Async Creep," where the use of async/await propagates through an entire call stack. Strategies to mitigate this include:
• Using groups to wait for blocks of asynchronous code.
• Implementing checks to allow a single library to function synchronously or asynchronously depending on the calling context.

The Diverse Python Ecosystem

Python is more than just CPython. The community ecosystem spans multiple implementations and runtimes tailored for different needs:
Jython and IronPython: For Java and .NET environments.
PyPy: A performance-focused JIT compiler.
MicroPython: Targeted at microcontrollers.
Grumpy: A Go-based Python implementation.

Topics

Chapters

7 chapters
Python Bytes
AI chat — answers grounded in episodes