Python là ngôn ngữ lập trình đã trở nên phổ biến rộng rãi — nhưng sự phổ biến này bắt nguồn từ khả năng đọc và dễ sử dụng của nó hơn là hiệu năng thô. Do đó, đôi khi việc tối ưu hóa hiệu suất trong Python thậm chí còn quan trọng hơn so với các ngôn ngữ khác. Hồ sơ là một công cụ có thể giúp các nhà phát triển thực hiện điều này
Các lệnh ma thuật đã trở thành yếu tố chính cho mọi người sử dụng sổ ghi chép khoa học dữ liệu. Thông qua việc mở rộng chức năng của mỗi sổ ghi chép, họ hướng đến mục tiêu làm việc trên sổ ghi chép hiệu quả hơn. Một số lệnh ma thuật này, chẳng hạn như phép thuật %time
in ra thời gian của CPU và đồng hồ treo tường, đã trở nên khá phổ biến trong khi những lệnh khác hầu như không được chú ý. Thay vì giới thiệu lại tất cả các lệnh ma thuật phổ biến nhất, bài viết này sẽ nêu bật các lệnh ma thuật ít được biết đến hơn có thể mang lại giá trị to lớn cho bất kỳ môi trường iPython nào
Mã hồ sơ với %%prun
Mặc dù các lệnh ma thuật được biết đến nhiều hơn là %time
và %timeit
cung cấp một số thông tin về thời gian của CPU và đồng hồ treo tường cho mã Python, nhưng chúng không thể phân tích phần nào của mã mất bao lâu để thực thi, khiến việc gỡ lỗi các ô có nhiều lệnh gọi hàm trở nên tẻ nhạt hơn. %prun
[chế độ dòng] và %%prun
[chế độ ô] chạy mã thông qua trình lược tả của Python và cung cấp thông tin chi tiết về thời gian thực hiện mỗi lệnh gọi hàm
Thay vì chỉ hiển thị tổng thời gian chạy ô, %%prun
nêu chi tiết cả tần suất một hàm được gọi và thời gian các lệnh gọi này chạy trong bao lâu. Trong ví dụ trên, hai chức năng được gọi là. Tuy nhiên, một trong các chức năng mất nhiều thời gian hơn đáng kể để chạy hơn các chức năng khác. Lệnh ma thuật%%prun
cho thấy rằng firstFunction[]
chạy cho 0. 722 giây trong khi secondFunction[]
chỉ mất 0. 007 giây để thực hiện
Xem nhanh các tệp với %more
Sau khi tải tệp xuống, làm việc với sổ ghi chép thường buộc người dùng phải mở tệp trong một trình soạn thảo văn bản riêng biệt để xác định trình giữ chỗ có dấu phân cách, định dạng ngày hoặc giá trị null nào đã được sử dụng. Lệnh ma thuật %more
cho phép người dùng tập trung trong môi trường máy tính xách tay của họ và kiểm tra các tệp trong khi viết mã
% ví dụ khác;
Mặc dù %more
không giả sử tệp thuộc bất kỳ loại cụ thể nào, nhưng %time
1 giả sử tệp là tệp Python và cũng cung cấp đánh dấu cú pháp. Điều đáng chú ý là %time
1 chấp nhận cả đường dẫn tệp và URL
Gỡ lỗi tương tác với %%debug
Mặc dù in dường như vẫn là một trong những phương pháp gỡ lỗi được sử dụng nhiều nhất trong sổ ghi chép, nhưng Python đã đi kèm với một trình gỡ lỗi mạnh mẽ hơn nhiều. Lệnh ma thuật %time
3 cho phép người dùng sử dụng trình gỡ lỗi pdb của Python một cách tương tác và tìm lỗi nhanh hơn
%% ví dụ gỡ lỗi;
Trong ví dụ trên, trình sửa lỗi của Python cho phép thực hiện từng bước hàm %time
4 bằng cách sử dụng lệnh %time
5. Sau khi gặp %time
6, lệnh %time
7 liệt kê tất cả các đối số được sử dụng trong lệnh gọi hàm hiện tại và cho thấy rằng tham số %time
8 đang gây ra ngoại lệ
Đã sửa các cuộc gọi chức năng với %autocall
Khi tốc độ là điều duy nhất quan trọng, việc bật gọi tự động bằng cách sử dụng %time
9 có thể giúp tăng tốc độ tạo mẫu đáng kể. Khi chế độ gọi tự động được đặt thành 'Thông minh', người dùng máy tính xách tay không còn cần chuyển các tham số chức năng trong dấu ngoặc đơn. Sử dụng chức năng từ ví dụ %time
3 ở trên, autocall cho phép người dùng gọi chức năng bằng cách sử dụng %timeit
1 thay vì %timeit
2
ví dụ về % cuộc gọi tự động;
Mặc dù autocall cho phép tạo nguyên mẫu nhanh hơn, nhưng điều quan trọng cần lưu ý là nó có thể làm giảm khả năng đọc mã được tạo
Tóm lượcCác lệnh ma thuật là công cụ tuyệt vời để tăng năng suất khi làm việc với sổ ghi chép khoa học dữ liệu và khả năng của chúng vượt xa những gì người ta có thể mong đợi. Mặc dù bốn lệnh ma thuật trong bài viết này đã có thể giúp tăng năng suất rất nhiều, nhưng lệnh ma thuật nào hữu ích nhất thường phụ thuộc vào người dùng và trường hợp sử dụng cụ thể hiện có. May mắn thay, thậm chí còn có một lệnh kỳ diệu giúp người dùng thử nghiệm các lệnh kỳ diệu mà không cần rời khỏi môi trường sổ ghi chép trong %timeit
3. Ngoài ra, tài liệu iPython nêu chi tiết tất cả các tùy chọn có sẵn cho các lệnh ma thuật cũng như cách mở rộng hệ sinh thái bằng cách xây dựng các lệnh ma thuật tùy chỉnh
nguồn
[1] “Các lệnh ma thuật tích hợp. ” IP Python 7. 26. 0 tài liệu. Truy cập ngày 8 tháng 8 năm 2021. https. //ipython. đọcthedocs. io/en/ổn định/tương tác/ma thuật. HTML
[2] “Pdb — Trình gỡ lỗi Python. ” Trăn 3. 9. 6 tài liệu. Truy cập ngày 8 tháng 8 năm 2021. https. // tài liệu. con trăn. org/3/library/pdb. HTML