import cProfilesource = open("slow.py").read()cProfile.run(source, sort="tottime")source = """def test_me(): s = 0 for i in range(1000000): s += i**2 return stest_me()"""cProfile.run(source, sort="tottime") 4 function calls in 0.531 seconds Ordered by: internal time ncalls tottime percall cumtime percall filename:lineno(function) 1 0.531 0.531 0.531 0.531 <string>:2(test_me) 1 0.000 0.000 0.531 0.531 {built-in method builtins.exec} 1 0.000 0.000 0.531 0.531 <string>:2(<module>) 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}cProfile - профилирует вызовы функций, бесполезен при профилировании одной функцииВ IPython
%lprun -f slow_func bench() - bench вызывает slow_funс, которую профилируем построчноNumPy - библиотека для научных вычислений на Python, написана на С и Fortran
Создание двух матриц 100х100 и перемножение:
import numpy as npX = np.random.randint(0, 256, (100, 100))Y = np.random.randint(0, 256, (100, 100))X.dot(Y)