Làm cách nào để sử dụng cProfile trong python 3?

Tối ưu hóa hiệu suất là một nhu cầu cơ bản để phát triển phần mềm. Khi nói đến việc tối ưu hóa hiệu suất của ứng dụng, theo dõi tần suất, duy trì sản xuất hoặc duy trì lệnh gọi phương thức, trình lập hồ sơ đóng một vai trò quan trọng. Tìm hiểu lý do tại sao Python cProfile là giao diện định hình được đề xuất và cách giao diện này nâng cao hiệu suất phần mềm của bạn

  • Hồ sơ Python có ba phần quan trọng bao gồm
  • Định nghĩa & giải thích;
  • Công cụ  cho một ứng dụng chung được phát triển bằng ngôn ngữ Python;
  • Công cụ APM (giám sát hiệu suất ứng dụng)


Làm cách nào để sử dụng cProfile trong python 3?
Làm cách nào để sử dụng cProfile trong python 3?

Python cProfile. Tối ưu hóa các yêu cầu phát triển phần mềm

Báo cáo của Statista cho thấy Java và Python xếp hạng trong số năm ngôn ngữ lập trình được sử dụng rộng rãi nhất. Khi nói đến việc phát triển một ứng dụng bằng Python, các nhà phát triển cần tập trung vào giao diện định hình để cải thiện hiệu suất của dự án

Một cách để cải thiện hiệu suất của ứng dụng Python là thông qua   cProfile.  

CProfile là gì?

cProfile là một thư viện nâng cao theo dõi các hàm để tạo danh sách các hàm thường được gọi nhất. cProfile có lợi cho sự phát triển vì.

1. Cung cấp một thư viện tiêu chuẩn;

2. Theo dõi hành vi cuộc gọi thống kê khác nhau;

3. Nhà phát triển có thể sử dụng cProfile mà không bị hạn chế

Ví dụ chương trình cProfile đơn giản

từ điểm chuẩn nhập simul

nhập cProfile

pr = cHồ sơ. Hồ sơ()

pr. cho phép()

điểm chuẩn()

pr. vô hiệu hóa()

pr. print_stats()

Mã số. (Nguồn)

Khi bạn sử dụng cProfile, bạn sẽ xuất thành năm cột khác nhau, bao gồm

  • cuộc gọi. Ncalls cho biết số lần mỗi chức năng được gọi trong chương trình
  • toàn thời gian. Tottime hiển thị tổng thời gian dành cho vị trí này trước khi chuyển sang quy trình khác
  • kiêm nhiệm. cumtime  cho biết thời gian bao gồm để gọi các chức năng khác
  • Mỗi cuộc gọi. Percall hiển thị tổng thời gian dành cho một cuộc gọi chức năng. Nó có được bằng cách chia số lượng cuộc gọi cho thời gian tích lũy.      

Chương trình ngắn giải thích việc sử dụng các cột khác nhau trong Python cProfile

giai thừa xác định (n)

nếu n == 0

trả lại 1. 0

khác

trả về n * giai thừa(n-1)

def taylor_exp(n)

trở lại [1. 0/giai thừa(i) cho tôi trong phạm vi(n)]

def taylor_sin(n)

độ phân giải = []

cho tôi trong phạm vi (n)

nếu tôi% 2 == 1

độ phân giải. nối thêm((-1)**((i-1)/2)/float(giai thừa(i)))

khác

độ phân giải. nối thêm (0. 0)

trả lại độ phân giải

điểm chuẩn xác định ()

taylor_exp(500)

taylor_sin(500)

nếu __name__ == ‘__main__’

điểm chuẩn()

Mã số. (Nguồn)

Lập hồ sơ với Python cProfile. Mọi thứ bạn cần biết đều ở ngay đây

Lập hồ sơ mã cho phép bạn nhanh chóng tìm ra các nút thắt cổ chai trong mã của mình. Hồ sơ giúp bạn tìm mã nào mất nhiều thời gian nhất. Trình biên dịch mã cho phép bạn xem nhanh các đoạn mã để tối ưu hóa hiệu suất phần mềm. Giao diện hồ sơ của cProfile giúp phát triển dễ dàng hơn. 0

Python cProfile là một tập hợp các số cho biết thời lượng và tần suất các phần chương trình được gọi và chạy. Bạn có thể dễ dàng định dạng báo cáo dưới dạng mô-đun pstats. Mã hóa bằng cProfile tương đối dễ dàng. Bạn chỉ cần nhập đúng chức năng và mô-đun để gọi chức năng chạy.  

Kiểm tra ví dụ cProfile đơn giản ngay tại đây

>>> nhập hashlib

>>> nhập cProfile

>>> cProfile. chạy(“hashlib. md5('abcdefghijkl'). tiêu()")

4 lệnh gọi hàm trong 0. 000 CPU thứ hai

Đặt hàng bởi. tên chuẩn

ncalls tottime cumtime percall filename. dòng (chức năng)

        1 0.000 0.000 0.000 0.000 :1()

1 0. 000 0. 000 0. 000 0. 000 {_hashlib. openssl_md5}

1 0. 000 0. 000 0. 000 0. 000 {phương thức 'tiêu hóa' của '_hashlib. đối tượng HASH}

1 0. 000 0. 000 0. 000 0. 000 {phương thức 'vô hiệu hóa' của '_lsprof. đối tượng hồ sơ}

Mã số. (Nguồn)

Nhập cProfile. Tìm hiểu đúng cách để sử dụng nó

Người dùng cũng có thể sử dụng các công cụ hồ sơ mã miễn phí như Stackify Prefix. Tiền tố giúp tăng tốc mã hóa và xử lý các sự cố không mong muốn như ngoại lệ ẩn, v.v. Tiền tố đặt sức mạnh của APM vào tay các nhà phát triển. Bằng cách xác thực hiệu suất của mã khi nó được viết, người dùng Tiền tố thúc đẩy mã tốt hơn để thử nghiệm, nhận được ít phiếu hỗ trợ hơn từ quá trình sản xuất và có các nhà quản lý nhà phát triển hạnh phúc hơn. Tiền tố cung cấp hỗ trợ tuyệt vời cho Python, cũng như. NET, Java,  PHP, Node JS và Ruby trên Windows và MacOS. Tải xuống tiền tố MIỄN PHÍ

Với cProfile, nhà phát triển có thể sử dụng tiện ích mở rộng C cho các chương trình chạy dài. Tiện ích mở rộng C là một mô-đun python tích hợp để định hình. Đó là một trình lược tả Python thường được sử dụng

  • Giúp bạn biết tổng thời gian chạy mà toàn bộ mã yêu cầu
  • Xác định thời gian cần thiết và cho phép người dùng tìm khu vực cần tối ưu hóa
  • Hiển thị thời gian các chức năng nhất định được gọi
  • Xuất khẩu  với sự trợ giúp của mô-đun pstats
  • Sử dụng mô-đun Snakeviz để kiểm tra dữ liệu

Mã được sử dụng để nhập gói cProfile

# mô-đun nhập khẩu

nhập cProfile

Mã số. (Nguồn)

Cách sử dụng cơ bản của cProfile

Cách lập hồ sơ hiệu quả nhất với cProfile là sử dụng hàm run(). Bạn có thể chuyển một câu lệnh chuỗi để chạy(). Kiểm tra mã dưới đây để biết làm thế nào bạn có thể làm như vậy

>>> x = [] >>> nội trang loại (x). danh sách

>>> x=[1,2,3,4]

>>> x[1,2,3,4,5]

# Danh sách 2 chiều (danh sách của danh sách)

>>> x = [[1,2,3,4,5], [5,6,7,8]]

>>> x[[1, 2, 3, 4], [5, 6, 7, 8,9]]

# Danh sách răng cưa, không phải hình chữ nhật

>>> x = [[1,2,3,4, 5] , [5,6,7]]

>>> x[[1, 2, 3, 4], [5, 6, 7,8]]

# Kiểu dữ liệu hỗn hợp

>>> x = [1,1. 0,1+0,'một',Không,Đúng]

>>> x[1, 1. 0, (1+0),'một', Không có, Đúng]

Mã số. (Nguồn)

Chức năng hồ sơ của cProfile giúp gọi các chức năng khác

Bạn thậm chí có thể gọi các chức năng khác bằng cách sử dụng hồ sơ. Truyền một quy trình chính () cho cProfile. hàm run() dưới dạng chuỗi. Kiểm tra ví dụ dưới đây để hiểu rõ hơn

từ nhập mảng *

# Khai báo một mảng gồm 10 số float

num_array = mảng('f', phạm vi(0, 10))

# In mảng trước khi xóa phần tử

print(“num_array trước khi xóa. {}”. định dạng (num_array))

# Xóa phần tử đầu tiên của mảng

xóa num_array[0]

print(“num_array sau khi xóa phần tử đầu tiên. {}”. định dạng (num_array))

# Xóa phần tử cuối cùng

del num_array[len(num_array)-1]

print(“num_array sau khi xóa phần tử cuối cùng. {}”. định dạng (num_array))

# Xóa toàn bộ mảng trong một lần

xóa số_mảng

# In một mảng đã xóa sẽ làm tăng NameError

print(“num_array sau khi xóa phần tử đầu tiên. {}”. định dạng (num_array))

Mã số. (Nguồn)

Lớp hồ sơ của cProfile. Làm thế nào để sử dụng nó?

Bạn có biết mình cần gì khi thực hiện phương thức run() không?

Python cProfile hoạt động như thế nào?

Python cProfile là một tập hợp các số cho biết khoảng thời gian và tần suất các phần chương trình được gọi và chạy . Bạn có thể dễ dàng định dạng báo cáo dưới dạng mô-đun pstats. Mã hóa bằng cProfile tương đối dễ dàng. Bạn chỉ cần nhập đúng chức năng và mô-đun để gọi chức năng chạy.

CProfile hoạt động như thế nào?

cHồ sơ và hồ sơ cung cấp hồ sơ xác định của các chương trình Python . Hồ sơ là một tập hợp các số liệu thống kê mô tả tần suất và thời lượng các phần khác nhau của chương trình được thực thi. Những số liệu thống kê này có thể được định dạng thành các báo cáo thông qua mô-đun pstats.

Làm thế nào để sử dụng yappi Python?

Yappi là viết tắt của một trình lược tả python khác. .
run() - Chức năng này có thể được sử dụng làm trình quản lý ngữ cảnh để lập hồ sơ mã bằng yappi. .
yappi

Hồ sơ trong lập trình là gì?

Lập cấu hình chương trình là kỹ thuật tối ưu hóa nâng cao để sắp xếp lại các thủ tục hoặc mã bên trong các thủ tục, trong các chương trình ILE và chương trình dịch vụ dựa trên dữ liệu thống kê được thu thập khi chạy chương trình.