Cython có thể sử dụng thư viện Python không?
Trong một bài đăng gần đây, chúng tôi đã thảo luận về cách chạy Python nhanh hơn khoảng 91 lần so với tốc độ thông thường của nó. Trong bài đăng này, tôi muốn thảo luận về một câu hỏi chưa được trả lời từ câu hỏi trước Show
Mặc dù Python là một ngôn ngữ lập trình tuyệt vời, nhưng nhược điểm chính của nó là hiệu năng. Ngôn ngữ tao nhã với cú pháp đơn giản không được tạo ra để tính toán nhanh hơn Cython đã thu hẹp khoảng cách này trong nhiều năm bằng cách chuyển đổi mã Python thành các chương trình C đã biên dịch. Một loạt các gói máy tính Khoa học dựa trên Cython để tăng tốc độ tính toán Hãy so sánh hiệu suất của nó với giải pháp thay thế hiện đại Chúng ta sẽ bắt đầu bằng cách đếm các số nguyên tố bằng Python đơn giản. Sau đó, chúng tôi sẽ so sánh nó với phiên bản Cython của nó. Chúng tôi sẽ lặp lại chúng bằng cách sử dụng mô-đun đa xử lý của Python để tìm hiểu lợi ích của nó Cuối cùng, chúng tôi sẽ so sánh hiệu suất với các cách hiện đại để tăng tốc các chương trình Python Cython. vs Python để tính toán đơn giản Cách đơn giản nhất để nắm bắt những lợi ích của Cython là sử dụng nó trong một phép tính thô sơ. Ở đây chúng tôi sử dụng cùng một biện pháp mà tôi đã sử dụng trong điểm chuẩn trước đó - Đếm số lượng các số nguyên tố bên dưới một số Chúng tôi sử dụng mô-đun cProfile để đo hiệu suất của mọi tính toán. cProfile là một trong nhiều mô-đun Python tiêu chuẩn để đo thời gian chạy mã Tính toán bằng PythonĐoạn mã sau sẽ đếm số lượng các số nguyên tố dưới 35.000 và in một báo cáo hiệu suất chi tiết Đoạn mã của Tác giảKhi chạy đoạn mã Python ở trên, đầu ra có thể giống như bên dưới. Các số có thể khác nhau tùy theo thông số kỹ thuật PC của bạn Vì có thể có nhiều yếu tố ảnh hưởng đến hiệu suất nên bạn nên thực hiện thử nghiệm nhiều lần và sử dụng giá trị trung bình để so sánh. Mức trung bình cho việc thực hiện trên trong PC của tôi là 18. 721 giây Tính toán bằng CythonSử dụng Cython khác với sử dụng Python. Trước tiên, chúng ta cần chuyển đổi tập lệnh Python thành C
pip3 install --upgrade cython 2. Tạo một tệp 3. Tạo một tệp khác, 4. Bây giờ, chạy lệnh sau trong cửa sổ đầu cuối sẽ tạo phiên bản C của chức năng đếm số nguyên tố của chúng tôi python setup.py build_ext --inplace 5. Ngoài ra, hãy đổi tên (hoặc di chuyển) tệp pyx vì nó có thể gây xung đột nhập nếu không mv count_prime.pyx count_prime_dep.pyx 6. Cuối cùng, nhập chức năng vào ứng dụng chính của chúng tôi và chạy nó giống như cách chúng tôi gọi bất kỳ chức năng python nào khác Đoạn mã của Tác giảThời gian trung bình để chạy chương trình này là 11. 210 giây. Đây là báo cáo cProfile mẫu từ một trong mười thử nghiệm tôi đã thực hiện Giảm từ 18 giây xuống 11 là một cải tiến đáng chú ý. Cython thực hiện công việc của mình như mong đợi. Hãy lặp lại các bước cho kịch bản đa xử lý Cython. so với Python trên đa xử lýMô-đun đa xử lý trong Python là một cách tuyệt vời để bắt đầu nhiều quy trình con. Mỗi quy trình sẽ chạy một phiên bản mã của bạn. Nếu bộ xử lý có lõi chạy không tải, chúng cũng có thể chạy song song đa xử lý PythonĐoạn mã sau sẽ tính toán các số nguyên tố dưới 20K, 25K, 30K, 35K và 40K trong nhiều quy trình (song song nếu có thể. ) Đoạn mã của Tác giảChạy đoạn mã trên sẽ dẫn đến thời gian trung bình là 29. 7 giây. Các kết quả đầu ra có thể trông giống như dưới đây đa xử lý CythonĐoạn mã dưới đây sẽ lặp lại quy trình tương tự với phiên bản C mà chúng tôi đã biên dịch trước đó Thời gian trung bình cho việc này là khoảng 18 giây và đầu ra có thể giống như bên dưới Một lần nữa, Cython đã chứng tỏ hiệu quả trong việc tăng tốc đáng kể thời gian xử lý của python. Nó đã cắt giảm thời gian chạy toàn bộ vòng lặp xuống 37. 9% Điện toán hiệu năng cao với TuplexChúng tôi đã thấy thành công ngoạn mục khi sử dụng Cython. Trong ứng dụng đa xử lý và đếm số nguyên tố đơn giản, nó giúp giảm đáng kể thời gian thực hiện Điều này có thể nhanh hơn? Nếu bạn đang tìm kiếm một bài đăng chi tiết về Tuplex, thì đây là một Làm cách nào để tăng tốc đường ống dữ liệu Python lên tới 91X?Hướng dẫn dài 5 phút có thể tiết kiệm hàng tháng cho các dự án dữ liệu lớn của bạnhướng tới khoa học dữ liệu. com Tuplex cho một quá trình duy nhấtTuplex chuyển đổi các tập lệnh Python thành các mã bit LLVM và chạy chúng song song. Kết quả là một sự cải thiện đáng kể trong hiệu suất. Thư viện mới này tập trung vào các đường dẫn dữ liệu, nhưng các ứng dụng của nó không chỉ giới hạn trong khoa học dữ liệu Đoạn mã dưới đây sẽ chạy một phép tính duy nhất bằng Tuplex. Bởi vì chúng tôi chỉ chuyển một số duy nhất trong đối số danh sách của phương thức song song hóa, Tuplex sẽ chạy nó trong một luồng đơn Đoạn mã của Tác giảPhương pháp tuplex cho kết quả trung bình là 9 giây. Lưu ý rằng chúng tôi không xem xét thời gian Tuplex cần để thiết lập ngữ cảnh Thật ấn tượng so với 11 giây của Cython. Kết quả cũng có thể khác nhau tùy theo kiến trúc của máy tính. Nhưng con số này cũng đủ cho thấy Cython có một đối thủ xứng tầm Tuplex trên tính toán song songMột so sánh cuối cùng đang chờ xử lý có thể là mục đích chính của Tuplex - song song hóa. Hãy tính toán bài tập đa xử lý tương tự với Tuplex. Tinh chỉnh dòng cuối cùng của ví dụ quy trình đơn Tuplex sẽ thực hiện thủ thuật. Đây là giao diện của nó Đoạn mã của Tác giảKết quả của việc chạy mã Tuplex song song là trung bình 10 giây đáng kinh ngạc. Để hoàn thành cùng một tác vụ, Cython mất 18 giây và Python đơn giản mất 29 giây Sự kết luận Cython đã từng là bản sửa lỗi hiệu suất chính (và duy nhất) dành cho các lập trình viên Python. Thư viện thường hoạt động tốt; Tuy nhiên, một thư viện tương đối mới Tuplex đang hoạt động một cách đầy hứa hẹn. Trong bài viết này, chúng tôi đã thực hiện một thí nghiệm đếm số nguyên tố để so sánh Tuplex với các phiên bản Cython. Dường như cũng có sự giảm đáng kể về thời gian thực hiện Nhưng kết quả có thể khác nhau tùy theo phần cứng, hệ điều hành và trạng thái hệ thống của bạn. Ngoài ra, vì Tuplex chưa sẵn sàng sản xuất nên bạn phải thận trọng khi sử dụng. Mặt khác, Cython ổn định và nhiều ứng dụng trong sản xuất đã sử dụng nó Toàn bộ điểm so sánh này không phải là kết luận cái này tốt hơn cái kia. Tuplex còn một hành trình dài phía trước để đi đến thời điểm này. Tuy nhiên, nếu Cython không phù hợp với dự án của bạn, thì đó không phải là ngõ cụt. Không còn nữa
Chưa phải là thành viên Medium? . Bạn có thể thưởng thức hàng nghìn bài viết sâu sắc và ủng hộ tôi khi tôi kiếm được một khoản hoa hồng nhỏ khi giới thiệu bạn Cython có thể sử dụng thư viện Python không?Vì Cython có thể chấp nhận hầu hết mọi tệp nguồn python hợp lệ nên một trong những điều khó khăn nhất khi bắt đầu chỉ là tìm ra cách biên dịch .
Cython có thể biên dịch tất cả mã Python không?Cython là một trình biên dịch tĩnh cho các ngôn ngữ lập trình Python và Cython, nó đơn giản hóa công việc viết các phần mở rộng Python C. Cython cho phép chúng tôi biên dịch mã Python , kết quả là các thư viện động cũng có thể được sử dụng làm mô-đun python.
Python và Cython có giống nhau không?Python là ngôn ngữ lập trình được thông dịch . Do đó, các lập trình viên Python cần các trình thông dịch để chuyển mã Python thành mã máy. Trong khi Cython là ngôn ngữ lập trình được biên dịch. Các chương trình Cython có thể được thực thi trực tiếp bởi CPU của máy tính bên dưới mà không cần sử dụng bất kỳ trình thông dịch nào.
Cython có tốt hơn Python không?Hiệu suất và tốc độ
. Nó cải thiện đáng kể tốc độ thực thi mã Python bằng cách biên dịch mã Python thành mã C. Quá trình biên dịch tiếp tục giúp các nhà phát triển chạy các chương trình Python một cách trơn tru mà không cần triển khai các tài nguyên máy tính bổ sung. Cython is much faster than Python. It improves Python code execution speed significantly by compiling Python code into C code. The compilation further helps developers to run the Python programs smoothly without deploying additional computing resources. |