Python - Завершение метода вручную (в частности, я прошу про line-profiler Роберта Керна)
Обертывание функции не проблема: как мне использовать line_profiler (от Robert Kern)?
from line_profiler import LineProfiler
import random
def do_stuff(numbers):
s = sum(numbers)
l = [numbers[i]/43 for i in range(len(numbers))]
m = ['hello'+str(numbers[i]) for i in range(len(numbers))]
numbers = [random.randint(1,100) for i in range(1000)]
lp = LineProfiler()
lp_wrapper = lp(do_stuff)
lp_wrapper(numbers)
lp.print_stats()
Однако то, что я не могу понять, это применение той же техники к методам.
Допустим, я пытаюсь использовать ту же технику в методе:
class Foo:
def method(self):
return 1
obj = Foo()
lp = LineProfiler()
lp_wrapper = lp(method)
obj.lp_wrapper() # Causes an error since Foo does not have a method called "lp_wrapper"
Каков наилучший способ исправить эту ошибку? Благодарю.
1 ответ
Решение
Лучший ответ приходит от schwobaseggl: "Вы пробовали lp_wrapper = lp(obj.method)
"
Оказывается, именно так вы оборачиваете методы.