Hyppää sisältöön

Docs CSC now features an automatic Finnish translation. Click here for more information.

Warning!

Puhti and Mahti are being decommissioned in stages, and their storage areas will become fully unavailable from 15 October 2026. Clean up unnecessary files and move any data you need to keep by 31 August 2026. See the Roihu data migration guide for instructions on transferring your data to Roihu.

Puhti scratch is very full: keep only active data there and move or delete everything else. No new Puhti scratch quota will be granted.

cProfile: Python-profileri

Saatavuus

  • Mahti: mikä tahansa Python-versio
  • Puhti: mikä tahansa Python-versio

Lisenssi

Käyttö on mahdollista sekä akateemisiin että kaupallisiin tarkoituksiin.

Käyttö

cProfile on Python-ohjelmien sisäänrakennettu profilointityökalu. Profilointityökalua voi käyttää kahdella tavalla. Koodin sisällä (tai tulkista):

import cProfile
cProfile.run('functba(list_parameters)')

Nyt skripti voidaan suorittaa tavallisena Python-työnä. Tämä antaa tietoa siitä, kuinka kauan funktion kutsu kestää ja kuinka monta kertaa funktiota kutsutaan.

Vaihtoehtoisesti cProfile voidaan käynnistää myös skriptinä toisen skriptin profilointiin:

python -m cProfile [-o output_file] [-s sort_order] myscript.py

Tulokset voidaan tulostaa tai tallentaa tiedostoon. Oletuksena ne järjestetään nimen mukaan, mutta myös muita vaihtoehtoja on saatavilla.

Tiedostoon tallennettu raportti voidaan esimerkiksi visualisoida ja tulkita graafisella työkalulla, kuten pyprof2calltree. Tässä on esimerkki funktion profiloinnista:

93 function calls in 0.065 seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    0.065    0.065 <string>:1(<module>)
        1    0.000    0.000    0.028    0.028 _numpy_fft.py:1086(irfftn)
        1    0.000    0.000    0.003    0.003 arraypad.py:102(_do_append)
        2    0.000    0.000    0.000    0.000 arraypad.py:107(_prepend_const)
        2    0.000    0.000    0.004    0.002 arraypad.py:136(_append_const)
        1    0.000    0.000    0.008    0.008 arraypad.py:964(pad)
        1    0.000    0.000    0.065    0.065 compute_correlations.py:4(compute_correlations)
        1    0.032    0.032    0.065    0.065 normxcorr2.py:33(normxcorr2)
        1    0.000    0.000    0.065    0.065 {built-in method builtins.exec}
        1    0.003    0.003    0.003    0.003 {built-in method numpy.concatenate}
        2    0.002    0.001    0.002    0.001 {built-in method numpy.copyto}
        1    0.002    0.002    0.002    0.002 {built-in method numpy.where}
        1    0.000    0.000    0.000    0.000 {built-in method numpy.zeros}
        2    0.000    0.000    0.000    0.000 {method 'astype' of 'numpy.ndarray' objects}
        2    0.003    0.002    0.003    0.002 {method 'copy' of 'numpy.ndarray' objects}
        1    0.020    0.020    0.028    0.028 {mkl_fft._pydfti.irfftn_numpy}

Pidä mielessä, että profilerin suorittaminen täytyy tehdä samalla tavalla kuin (puhti- tai mahti-) eräajon tai interaktiivisen työn suorittaminen.

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta