- 脚本级别
python -m cProfile -o del.out timeit_and_numba.py
# 或者 line_profile
- 函数,方法级别
# 4 class.functions
def timers(origin_func):
def wrapper(self, *args, **kwargs):
try:
t1 = time.time()
u = origin_func(self, *args, **kwargs)
print(time.time() - t1)
return u
except Exception as e:
print(e)
return wrapper
# 4 functions
def timer(func):
def inner(self, *args, **kwargs):
t1 = time.time()
func(*args, **kwargs)
print(time.time()-t1)
return inner
-timeit函数
import numba as nb
from numba import jit
import numpy as np
from timeit import timeit
@jit('f8(f8[:])')
def sum1d(array):
s = 0.0
n = array.shape[0]
for i in range(n):
s += array[i]
return s
array = np.random.random(10000)
# print(timeit(sum1d(array), number=100))
# print(timeit(np.sum(array), number=100))
# print(timeit(sum(array), number=100))
t1 = timeit('sum1d', "from __main__ import sum1d", number=1000)
print(t1)
t2 = timeit('np.sum(array)', "from __main__ import array, np", number=1000)
print(t2)
t3 = timeit('sum(array)', "from __main__ import array", number=1000)
print(t3)