Skip to main content

Python package for garbage collection utilities and memory management

Project description

gc

Python package for garbage collection utilities and memory management.

Overview

The gc package provides comprehensive tools and utilities for working with Python's garbage collector, memory profiling, and cleanup operations. It offers enhanced garbage collection control, memory monitoring, and debugging capabilities.

Features

  • Enhanced Garbage Collection: Control and monitor Python's garbage collector with detailed statistics
  • Memory Profiling: Track memory usage over time and analyze memory patterns
  • Object Tracking: Monitor specific objects using weak references
  • Reference Cycle Detection: Find and analyze reference cycles in your code
  • Memory Analysis: Comprehensive memory usage analysis and reporting
  • Utility Functions: Common garbage collection and memory management tasks

Installation

pip install gc

Development Installation

git clone https://github.com/tom-sapletta/gc.git
cd gc
pip install -e ".[dev]"

Quick Start

Basic Garbage Collection Control

from gc import GarbageCollector

# Create a garbage collector instance
gc_manager = GarbageCollector()

# Force garbage collection
collected = gc_manager.collect()
print(f"Collected {collected} objects")

# Get memory summary
summary = gc_manager.get_memory_summary()
print(summary)

Memory Profiling

from gc import MemoryProfiler

# Create a profiler instance
profiler = MemoryProfiler()

# Take a memory snapshot
profiler.take_snapshot("before_operation")

# Your code here...
data = [list(range(1000)) for _ in range(100)]

# Take another snapshot
profiler.take_snapshot("after_operation")

# Compare snapshots
comparison = profiler.compare_snapshots(0, 1)
print(f"Memory change: {comparison['rss_diff']} bytes")

Memory Monitoring

from gc.utils import monitor_memory_usage

# Monitor memory for 60 seconds
samples = monitor_memory_usage(duration=60, interval=1.0)

for sample in samples:
    print(f"Memory: {sample['rss']} bytes, Objects: {sample['objects_count']}")

API Reference

GarbageCollector

Main class for garbage collection control and monitoring.

Methods

  • enable() - Enable garbage collection
  • disable() - Disable garbage collection
  • collect(generation=2) - Force garbage collection
  • get_stats() - Get garbage collection statistics
  • get_memory_summary() - Get comprehensive memory summary

MemoryProfiler

Class for memory profiling and object tracking.

Methods

  • take_snapshot(label="") - Take a memory snapshot
  • track_object(obj, label="") - Track an object with weak reference
  • compare_snapshots(index1, index2) - Compare two memory snapshots
  • get_tracked_objects() - Get information about tracked objects

Utility Functions

  • cleanup_temp_files(pattern="*") - Clean up temporary files
  • monitor_memory_usage(duration=60, interval=1.0) - Monitor memory usage
  • force_garbage_collection(verbose=False) - Force garbage collection on all generations
  • find_object_cycles(obj, max_depth=10) - Find reference cycles
  • analyze_memory_usage() - Comprehensive memory analysis

Requirements

  • Python 3.8+
  • psutil>=5.8.0

Development

Running Tests

pytest

Code Formatting

black gc/

Type Checking

mypy gc/

License

Apache License 2.0 - see LICENSE for details.

Contributing

Contributions are welcome! Please read the CONTRIBUTING.md file for details on our code of conduct and the process for submitting pull requests.

Changelog

0.1.0

  • Initial release
  • Basic garbage collection control
  • Memory profiling capabilities
  • Utility functions for memory management

License

Apache License 2.0 - see LICENSE for details.

Author

Created by Tom Sapletta - tom@sapletta.com

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

glon-0.1.11.tar.gz (18.9 kB view details)

Uploaded Source

Built Distribution

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

glon-0.1.11-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

File details

Details for the file glon-0.1.11.tar.gz.

File metadata

  • Download URL: glon-0.1.11.tar.gz
  • Upload date:
  • Size: 18.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for glon-0.1.11.tar.gz
Algorithm Hash digest
SHA256 d8fa6eb998cb2a43a3db9b02d66a7707a35e6fd80619137ad4fcb7eace4d1c8a
MD5 208d4a825adc9fb6e33bac2734013ae9
BLAKE2b-256 ba8c8ceedf07cd9045a12dfda8897e4f8eec631c4392ba09bc327dcfd25033f6

See more details on using hashes here.

File details

Details for the file glon-0.1.11-py3-none-any.whl.

File metadata

  • Download URL: glon-0.1.11-py3-none-any.whl
  • Upload date:
  • Size: 13.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for glon-0.1.11-py3-none-any.whl
Algorithm Hash digest
SHA256 6b76f9595a497d6f06b1bdf2b77694a19596b7dff33a491e87600c4ab955ec3f
MD5 da6b8e6fec57afd753b964d7d786fc36
BLAKE2b-256 1ab8c0556c1d662a1e4d2c67fac4e4939176f26f044d0af20b403ce2c87fedd1

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