Flask Academy · leksjon

Memoiser kostbare funksjoner

Bufre funksjonsresultater basert på argumentene.

Leksjon 3 av 413 trinn

Memoiser kostbare funksjoner er en gratis leksjon i Flask Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Flask Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Flask Academy inneholder totalt 4 leksjoner.

Utover hele views

Noen ganger er det bare én treg hjelpefunksjon som er problemet, ikke hele siden. Memoization hurtigbufrer resultatet av en funksjon basert på argumentene.

memoize-dekoratoren

De pakker inn en funksjon med @cache.memoize(). De samme argumentene gir det lagrede resultatet i stedet for at funksjonen beregnes på nytt. 💡

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

Nøkkel basert på argumenter

Memoize bygger nøkkelen fra arguments. heavy(2) og heavy(5) hurtigbufres separat, og hver av dem husker sitt eget svar.

cached og memoize

Bruk cached for views med URL som nøkkel, og memoize for vanlige funksjoner med inndata som nøkkel. De løser problemer på ulike lag.

Angi et memoize-tidsavbrudd

Akkurat som for views angir De et timeout for memoize, slik at resultater utløper. Når tiden er ute, beregnes resultatet på nytt og lagres igjen.

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

Perfekt for pure-funksjoner

Memoize fungerer best for pure funksjoner: Samme inndata gir alltid samme utdata, uten bivirkninger som kan gå tapt.

Unngå å hurtigbufre bivirkninger

Ikke bruk memoize på en funksjon som sender e-post eller skriver en rad. Ved et cache hit hoppes funksjonskroppen over, slik at bivirkningen aldri utføres.

Metoder krever omtanke

For instansmetoder inkluderer nøkkelen self. To objekter hurtigbufres separat, noe som vanligvis er akkurat det De ønsker.

Fjern ett memoized-resultat

De kan fjerne én oppføring med delete_memoized ved å sende inn funksjonen og de nøyaktige argumentene som skal slettes.

cache.delete_memoized(rates)

Fjern etter argument

Send argumenter til delete_memoized for å fjerne bare den aktuelle varianten, mens alle andre hurtigbufrede resultater beholdes.

cache.delete_memoized(heavy, 5)

Mål før De bruker memoize

Bruk bare memoize på det som faktisk er tregt. Profile først, fordi caching av billig arbeid gir ekstra kostnader for nøkler med liten reell gevinst.

Rask sjekk

De bruker memoize på en funksjon som også logger hvert kall til databasen.

Oppsummering: Memoization

De kan bruke memoize på trege pure-funksjoner, lage nøkler basert på argumenter, angi tidsavbrudd og fjerne resultater med delete_memoized. 🎯

Gratis å komme i gang

Lær deg Python med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
30
Leksjoner
120

Ofte stilte spørsmål

Er leksjonen «Memoiser kostbare funksjoner» gratis?

Ja – hele teksten i «Memoiser kostbare funksjoner» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Flask Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Flask Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Memoiser kostbare funksjoner»?

Bufre funksjonsresultater basert på argumentene. Du øver på Flask Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Flask Academy?

Ingen tidligere erfaring er nødvendig. Flask Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Memoiser kostbare funksjoner»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Flask Academy-leksjonen?

Ja. Alle Flask Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Sett opp Flask-Caching
  2. Bufre en view med cached
  3. Memoiser kostbare funksjoner
  4. Ugyldiggjør og utløp cacheoppføringer
← Tilbake til Flask Academy