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

Các giải pháp được cung cấp hoạt động như thế nào so với kỹ thuật sửa lỗi hiệu suất truyền thống của Python — Cython?

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

Ảnh chụp màn hình của tác giả

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 Cython

Sử 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

  1. Cài đặt Cython nếu nó chưa được cài đặt
pip3 install --upgrade cython

2. Tạo một tệp count_prime.pyx với nội dung bên dưới. Nó giống như trước đây

Đoạn mã của Tác giả

3. Tạo một tệp khác, setup.py , trong cùng thư mục với nội dung bên dưới. Nó sẽ biên dịch mã của bạn thành một chương trình C

Đoạn mã của Tác giả

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

Ảnh chụp màn hình của tác giả

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

Ảnh chụp màn hình của tác giả

đ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 đó

Đoạn mã của Tác giả

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

Ảnh chụp màn hình của tác giả

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 Tuplex

Chú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ạn

hướng tới khoa học dữ liệu. com

Tuplex cho một quá trình duy nhất

Tuplex 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

Ảnh chụp màn hình của tác giả

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 song

Mộ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

Ảnh chụp màn hình của tác giả

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

Cảm ơn đã đọc, người bạn. Có vẻ như bạn và tôi có rất nhiều sở thích chung. Tôi muốn kết nối với bạn trên LinkedIn, Twitter và Medium

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?

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.

Chủ Đề