Với sự trợ giúp của một lớp tiện lợi nhỏ, bạn có thể đo thời gian dành cho các dòng thụt lề như sau:
with CodeTimer():
line_to_measure()
another_line()
Dòng nào sẽ hiển thị thông tin sau sau khi (các) dòng thụt lề kết thúc thực thi:
Code block took: x.xxx ms
CẬP NHẬT: Bây giờ bạn có thể tải lớp học với pip install linetimer
và sau đó from linetimer import CodeTimer
. Xem dự án GitHub này .
Mã cho lớp trên:
import timeit
class CodeTimer:
def __init__(self, name=None):
self.name = " '" + name + "'" if name else ''
def __enter__(self):
self.start = timeit.default_timer()
def __exit__(self, exc_type, exc_value, traceback):
self.took = (timeit.default_timer() - self.start) * 1000.0
print('Code block' + self.name + ' took: ' + str(self.took) + ' ms')
Sau đó, bạn có thể đặt tên cho các khối mã mà bạn muốn đo lường:
with CodeTimer('loop 1'):
for i in range(100000):
pass
with CodeTimer('loop 2'):
for i in range(100000):
pass
Code block 'loop 1' took: 4.991 ms
Code block 'loop 2' took: 3.666 ms
Và lồng chúng:
with CodeTimer('Outer'):
for i in range(100000):
pass
with CodeTimer('Inner'):
for i in range(100000):
pass
for i in range(100000):
pass
Code block 'Inner' took: 2.382 ms
Code block 'Outer' took: 10.466 ms
Về việc timeit.default_timer()
, nó sử dụng bộ đếm thời gian tốt nhất dựa trên phiên bản hệ điều hành và Python, hãy xem câu trả lời này .
time.clock()
vàtime.clock()
đo thời gian CPU trên Unix mà là thời gian tường trên Windows. Tốt hơn là sử dụngtime.time()
ở nơi hành vi không thay đổi theo hệ điều hành. stackoverflow.com/questions/85451/…