You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			46 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
import gc
 | 
						|
import platform
 | 
						|
from typing import Iterable
 | 
						|
 | 
						|
from .metrics_core import CounterMetricFamily, Metric
 | 
						|
from .registry import Collector, CollectorRegistry, REGISTRY
 | 
						|
 | 
						|
 | 
						|
class GCCollector(Collector):
 | 
						|
    """Collector for Garbage collection statistics."""
 | 
						|
 | 
						|
    def __init__(self, registry: CollectorRegistry = REGISTRY):
 | 
						|
        if not hasattr(gc, 'get_stats') or platform.python_implementation() != 'CPython':
 | 
						|
            return
 | 
						|
        registry.register(self)
 | 
						|
 | 
						|
    def collect(self) -> Iterable[Metric]:
 | 
						|
        collected = CounterMetricFamily(
 | 
						|
            'python_gc_objects_collected',
 | 
						|
            'Objects collected during gc',
 | 
						|
            labels=['generation'],
 | 
						|
        )
 | 
						|
        uncollectable = CounterMetricFamily(
 | 
						|
            'python_gc_objects_uncollectable',
 | 
						|
            'Uncollectable objects found during GC',
 | 
						|
            labels=['generation'],
 | 
						|
        )
 | 
						|
 | 
						|
        collections = CounterMetricFamily(
 | 
						|
            'python_gc_collections',
 | 
						|
            'Number of times this generation was collected',
 | 
						|
            labels=['generation'],
 | 
						|
        )
 | 
						|
 | 
						|
        for gen, stat in enumerate(gc.get_stats()):
 | 
						|
            generation = str(gen)
 | 
						|
            collected.add_metric([generation], value=stat['collected'])
 | 
						|
            uncollectable.add_metric([generation], value=stat['uncollectable'])
 | 
						|
            collections.add_metric([generation], value=stat['collections'])
 | 
						|
 | 
						|
        return [collected, uncollectable, collections]
 | 
						|
 | 
						|
 | 
						|
GC_COLLECTOR = GCCollector()
 | 
						|
"""Default GCCollector in default Registry REGISTRY."""
 |