Flask Academy · Lektion

Memoisera kostsamma funktioner

Cacha funktionsresultat baserat på argument.

Lektion 3 av 413 steg

Memoisera kostsamma funktioner är en gratis lektion i Flask Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Flask Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Flask Academy innehåller totalt 4 lektioner.

Mer än hela vyer

Ibland är det bara en långsam hjälpfunktion som är problemet, inte hela sidan. Memoization cachar ett funktionsresultat baserat på funktionens argument.

Dekoratorn memoize

Du omsluter en funktion med @cache.memoize(). Samma argument returnerar det lagrade resultatet i stället för att beräknas på nytt. 💡

@cache.memoize()
def heavy(n):
    return slow_calc(n)

Nyckel baserad på argument

Memoize bygger nyckeln från arguments. heavy(2) och heavy(5) cachas separat, och var och en kommer ihåg sitt eget svar.

cached jämfört med memoize

Använd cached för vyer där nyckeln baseras på URL:en, och memoize för vanliga funktioner där nyckeln baseras på indata. De löser problem på olika lager.

Ange en timeout för memoize

Precis som för vyer anger du en timeout för memoize, så att resultaten upphör att gälla. När tiden har gått beräknas resultatet på nytt och lagras igen.

@cache.memoize(timeout=120)
def rates():
    ...

Perfekt för rena funktioner

Memoize passar utmärkt för pure funktioner: samma indata ger alltid samma utdata, utan bieffekter som kan gå förlorade.

Undvik att cacha bieffekter

Använd inte memoize för en funktion som skickar e-post eller skriver en rad. Vid en cache hit hoppas funktionskroppen över, så effekten körs aldrig.

Var försiktig med metoder

För instansmetoder ingår self i nyckeln. Två objekt cachas separat, vilket vanligtvis är precis det du vill.

Ta bort ett memoiserat resultat

Du kan ta bort en enskild post med delete_memoized genom att skicka med funktionen och de exakta argument som ska rensas.

cache.delete_memoized(rates)

Rensa efter argument

Skicka argument till delete_memoized för att ta bort just den varianten och lämna alla andra cachade resultat orörda.

cache.delete_memoized(heavy, 5)

Mät innan du memoiserar

Memoisera bara sådant som faktiskt är långsamt. Profile först, eftersom cachning av billigt arbete lägger till kostnader för nyckelhantering utan någon större verklig vinst.

Snabb kontroll

Du memoiserar en funktion som dessutom loggar varje anrop till din databas.

Sammanfattning: Memoisering

Du kan memoize långsamma rena funktioner, skapa nycklar utifrån argument, ange timeouter och ta bort poster med delete_memoized. 🎯

Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
30
Lektioner
120

Vanliga frågor

Är lektionen ”Memoisera kostsamma funktioner” gratis?

Ja – hela texten till ”Memoisera kostsamma funktioner” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Flask Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Flask Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Memoisera kostsamma funktioner”?

Cacha funktionsresultat baserat på argument. Ni övar på Flask Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Flask Academy?

Du behöver inga förkunskaper. Utbildningen i Flask Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Memoisera kostsamma funktioner”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Flask Academy-lektionen?

Ja. Varje Flask Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Konfigurera Flask-Caching
  2. Cacha en vy med cached
  3. Memoisera kostsamma funktioner
  4. Ogiltigförklara och låt cacheposter löpa ut
← Tillbaka till Flask Academy