← retour aux snippets

dataclasses: slots pour mémoire et vitesse

Réduire l'empreinte mémoire et accélérer l'accès aux attributs.

python dataclasses #dataclasses#slots#performance

objectif

Réduire l’empreinte mémoire et accélérer l’accès aux attributs.

code minimal

from dataclasses import dataclass

@dataclass(slots=True)
class Vec2:
    x: float
    y: float

v = Vec2(1.0, 2.0)
print(hasattr(v, "__slots__") and v.x + v.y == 3.0)  # attendu: True

utilisation

from dataclasses import dataclass
@dataclass(slots=True)
class User: name: str; active: bool = True
u = User("bob")
print(u.active is True)

variante(s) utile(s)

from dataclasses import dataclass, asdict
@dataclass(slots=True)
class P: a:int; b:int
print(asdict(P(1,2))["a"] == 1)

notes

  • slots empêche dict; gains mémoire notables sur de nombreux objets.
  • Compatible avec frozen=True si besoin.