Если вы определили потенциальные узкие места в функции / методе phes
в find_pixel_pairs.py
, вы можете использовать line_profiler
для получения таких показателей производительности построчного профиля выполнения (скопировано из другого вопроса здесь ):
Timer unit: 1e-06 s
Total time: 9e-06 s
File: <ipython-input-4-dae73707787c>
Function: do_other_stuff at line 4
Line # Hits Time Per Hit % Time Line Contents
==============================================================
4 def do_other_stuff(numbers):
5 1 9 9.0 100.0 s = sum(numbers)
Total time: 0.000694 s
File: <ipython-input-4-dae73707787c>
Function: do_stuff at line 7
Line # Hits Time Per Hit % Time Line Contents
==============================================================
7 def do_stuff(numbers):
8 1 12 12.0 1.7 do_other_stuff(numbers)
9 1 208 208.0 30.0 l = [numbers[i]/43 for i in range(len(numbers))]
10 1 474 474.0 68.3 m = ['hello'+str(numbers[i]) for i in range(len(numbers))]
Имея эту информацию, вы не должны разбивать phes
на несколько подфункций, потому что вы могли точно видеть, какие строки имеют наибольшее время выполнения.
Поскольку вы упоминаете, что ваш скрипт долго выполняется, я бы рекомендовал использовать line_profiler
для максимально ограниченного числа методов, потому что, хотя профилирование добавляет дополнительные издержки, профилирование строки может добавить больше.