Để có được số liệu thống kê hồ sơ nhanh chóng trên một máy tính xách tay IPython. Người ta có thể nhúng line_profiler và memory_profiler thẳng vào sổ ghi chép của họ.
Một gói hữu ích khác là Pympler . Nó là một gói hồ sơ mạnh mẽ có khả năng theo dõi các lớp, đối tượng, chức năng, rò rỉ bộ nhớ, v.v. Ví dụ bên dưới, Tài liệu đính kèm.
Hiểu rồi!
!pip install line_profiler
!pip install memory_profiler
!pip install pympler
Tải nó!
%load_ext line_profiler
%load_ext memory_profiler
Sử dụng nó!
%thời gian
%time print('Outputs CPU time,Wall Clock time')
#CPU times: user 2 µs, sys: 0 ns, total: 2 µs Wall time: 5.96 µs
Cung cấp:
- Thời gian CPU: Thời gian thực hiện cấp CPU
- sys lần: thời gian thực hiện cấp hệ thống
- tổng cộng: thời gian CPU + thời gian hệ thống
- Giờ tường: Giờ đồng hồ treo tường
% thời gian
%timeit -r 7 -n 1000 print('Outputs execution time of the snippet')
#1000 loops, best of 7: 7.46 ns per loop
- Cung cấp thời gian tốt nhất trong số lần chạy (r) đã cho trong vòng lặp (n) lần.
- Đầu ra chi tiết về bộ nhớ đệm hệ thống:
- Khi các đoạn mã được thực thi nhiều lần, hệ thống sẽ lưu trữ một số ý kiến và không thực hiện lại chúng có thể cản trở tính chính xác của các báo cáo hồ sơ.
% cắt tỉa
%prun -s cumulative 'Code to profile'
Cung cấp:
- số lượng cuộc gọi chức năng (ncalls)
- có các mục trên mỗi lệnh gọi hàm (riêng biệt)
- thời gian thực hiện mỗi cuộc gọi (percall)
- thời gian trôi qua cho đến khi chức năng đó gọi (cumtime)
- tên của func / module gọi là ...
% ghi nhớ
%memit 'Code to profile'
#peak memory: 199.45 MiB, increment: 0.00 MiB
Cung cấp:
% lprun
#Example function
def fun():
for i in range(10):
print(i)
#Usage: %lprun <name_of_the_function> function
%lprun -f fun fun()
Cung cấp:
sys.getsizeof
sys.getsizeof('code to profile')
# 64 bytes
Trả về kích thước của một đối tượng tính bằng byte.
asizeof () từ pympler
from pympler import asizeof
obj = [1,2,("hey","ha"),3]
print(asizeof.asizeof(obj,stats=4))
pympler.asizeof có thể được sử dụng để điều tra lượng bộ nhớ mà một số đối tượng Python tiêu thụ. Ngược lại với sys.getsizeof, các đối tượng kích thước asizeof đệ quy
theo dõi từ pympler
from pympler import tracker
tr = tracker.SummaryTracker()
def fun():
li = [1,2,3]
di = {"ha":"haha","duh":"Umm"}
fun()
tr.print_diff()
Theo dõi tuổi thọ của một chức năng.
Gói Pympler bao gồm một số lượng lớn các hàm tiện ích cao cho mã hồ sơ. Tất cả trong số đó không thể được bảo hiểm ở đây. Xem tài liệu đính kèm để thực hiện hồ sơ dài dòng.
Tài liệu Pympler