IT og digitalisering

Sådan spotter du flaskehalse i din Python-kode

Kører din Python-kode langsommere, end du forventer? Selv små ineffektiviteter kan vokse sig store i datatunge scripts og pipelines. Her er, hvordan du identificerer flaskehalse i din kode – og hvor du får mest effekt af at optimere.

Hvor er det, koden halter?

Du har skrevet din kode, den virker – men den kører alt for langsomt. Måske tager den timer i stedet for minutter. Måske skalerer den dårligt, eller måske ved du bare, at den burde kunne køre hurtigere. Men hvor starter du? 

Python er et fleksibelt og læsbart sprog, men det er ikke kendt for sin rå performance. Særligt når du arbejder med store datasæt, loops eller tunge numeriske beregninger, kan koden hurtigt blive flaskehalsen. 

Når performance bliver en begrænsning i dine Python-projekter, er det sjældent hele koden, der er synderen. I mange tilfælde står 5-10 % af koden for langt størstedelen af køretiden.  

Spørgsmålet er: Kan du finde de 10 %? 

Brug en profiler til at finde flaskehalsene

Start med at måle den faktiske køretid på forskellige dele af dit program. Python har flere gode værktøjer: 

  • cProfile: God til at danne sig et overblik over hvilke funktioner, der tager mest tid.
  • line_profiler: Måler tid linje for linje i en specifik funktion – nyttig ved loops og tunge beregninger.
  • snakeviz: Visualiserer resultatet af cProfile, så du kan få overblik hurtigere.
  • Py-Spy – en ekstern sampling-profiler, der kan måle kode uden at ændre den. Virker også på kørende processer.
  • Filprofiler eller tracemalloc – til mere detaljeret hukommelsesanalyse, hvis du har mistanke om memory leaks eller unødigt højt RAM-forbrug.

Performanceproblemer er sjældent jævnt fordelt. En enkelt linje kan stå for 80 % af den samlede køretid. Det er spild af tid at optimere uden at vide, hvor den virkelige flaskehals er. 

Så prøv altid at tænke i flaskehalse – ikke i hele programmer. 

Sådan gør du – trin-for-trin  

1. Kør din kode med profiling:

Start med at analysere, hvor tiden bliver brugt, fx ved at køre dit script med cProfile.

Det giver en oversigt over funktioner og deres køretid.

2. Visualiser resultaterne

Output fra profiling kan være svært at læse direkte.

Derfor kan det være en fordel at visualisere resultaterne, fx med værktøjer som SnakeViz, der gør det lettere at se, hvor flaskehalsene er.

3. Zoom ind på de tunge funktioner

Når du har overblik, kan du fokusere på de funktioner, der bruger mest tid.

Det er her, optimering giver størst effekt – ikke i resten af koden.

4. Kig på hukommelsesforbrug

Performance handler ikke kun om tid, men også om hukommelse.

I Python kan værktøjer som tracemalloc bruges til at identificere, hvor programmet bruger mest hukommelse.

5. Brug GPU, hvis det giver mening

I nogle tilfælde kan det give mening at flytte beregninger til GPU – især ved store datamængder eller numeriske beregninger.

Biblioteker som PyTorch gør det muligt at udnytte GPU uden at ændre hele koden.

6. Test før og efter optimering:

Det er vigtigt at måle effekten af dine ændringer.

Små justeringer kan have stor effekt – men kun hvis de rammer det rigtige sted.

Hvornår skal du optimere – og hvornår skal du lade være?

Det er fristende at kaste sig ud i optimering, så snart noget virker langsomt – men det kan være spild af tid, hvis det ikke er et reelt problem.  

En klassisk fejl er at parallelisere eller omskrive kode, der slet ikke er performancekritisk. Eller at optimere små funktioner, mens store flaskehalse forbliver uadresserede.  

Med en god profilering sparer du både tid og frustrationer – og får mere ud af dine ressourcer. 

En tommelfingerregel: Mål først, optimer bagefter – og kun der, hvor du faktisk vinder noget. 

Hvornår skal du optimere?

Optimering bør være målrettet – ikke generel.

  • Vent med optimering, til du har et reelt performance-problem
  • Mål før du ændrer noget
  • Fokuser på de dele af koden, der betyder mest

Kursus

Data Science med Python

Lær hvordan du forbereder og udleder resultater fra data med Python på bare 3 dage. Brug Python til at bearbejde og visualisere data effektivt, forstå de basale principper ved data science og opbyg simple prædiktive modeller med Python.

Kursus

Data Science med Python

Lær hvordan du forbereder og udleder resultater fra data med Python på bare 3 dage. Brug Python til at bearbejde og visualisere data effektivt, forstå de basale principper ved data science og opbyg simple prædiktive modeller med Python.

Læs mere:

Tema

IT og digitalisering

Se IDAs tilbud IT-arkitektur, cybersikkerhed, UX, UI, AI og machine learning, programmering og softwareudvikling, datascience, compliance og datasikkerhed.

Tema

Kursusoversigt

Få adgang til et bredt udvalg af kurser hos IDA, skræddersyet til STEM-uddannede. Sikr din markedsværdi og udvikl dine kompetencer hele karrieren

Kontakt

Få hjælp nu

Find relevante, kvalitetssikrede kurser og efteruddannelse.