line_profiler

line_profilerarrow-up-right - Π»ΠΈΠ±Π° для построчного профилирования.

ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ - подсчСт ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²ΠΎ врСмя Π΅Π΅ выполнСния; посторочноС ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ - подсчСт ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ: врСмя выполнСния, потрСбляСмая ΠΏΠ°ΠΌΡΡ‚ΡŒ.

Установка

pip install line_profiler

ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ посрСдством запуска ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ модуля с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ kernprof ΠΈΠ»ΠΈ посрСдством создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° LineProfiler ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΅ΠΌΡƒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

kernprof

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° использования kernprof, ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ тСста.

Π”Π΅ΠΊΠΎΡ€ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ @profile, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠ² Π½Π΅ трСбуСтся.

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠΉ тСсты, Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ pytest.main ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ ΠΏΡƒΡ‚ΡŒ ΠΊ тСсту:

import pytest

pytest.main("{path_to_test}")

ЗапускаСм тСст, пСрСдавая Π½Π° Π²Ρ…ΠΎΠ΄ созданный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ:

kernprof -v -l {module}.py

Π€Π»Π°Π³ -v ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ профилирования сразу послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ модуля.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π²ΠΎΠ΄Π°:

ПослС запуска модуля Ρ‚Π°ΠΊΠΆΠ΅ появится Ρ„Π°ΠΉΠ» {module}.py.lprof, содСрТащий Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ профилирования, для просмотра ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ line_profiler:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: https://stackoverflow.com/a/23765051/5500609arrow-up-right

LineProfiler

Для профилирования с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ LineProfiler ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€, ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΠΉ экзСмпляр класса ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ профилирования:

ПослС дСкорирования ΠΈ запуска ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ„Π°ΠΉΠ»Ρ‹ с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°ΠΌΠΈ. Для просмотра - снова ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ line_profiler.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: https://zapier.com/engineering/profiling-python-boss/arrow-up-right

Last updated

Was this helpful?