Hyppää sisältöön

A new version of SD Connect and SD Desktop will be available from Monday, September 28. The major upgrade will introduce significant improvements, but also includes changes that are not compatible with the current version of the service. Click here to review the available support materials.

Warning!

Puhti and Mahti computing services have been decommissioned and no new jobs are accepted or executed on its compute nodes. Puhti and Mahti login nodes and storage services are planned to remain available until 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.

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. Oletusarvoisesti 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 profiloinnin tuloksesta:

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}

Suomenkielinen tekoälykäännös

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

Klikkaa tästä antaaksesi palautetta