Cài đặt Maturin để kết nối giữa Rust và Python qua một dự án đơn giản

Bài viết trước chúng ta đã nói về việc tăng tốc Python nhanh gấp 66 lần bằng Rust qua PyO3 của Maturin, bài này chúng ta sẽ đi sâu hơn một chút về cách cài đặt.

Tôi đã làm code Python của mình chạy nhanh gấp 66 lần

Nhắc lại một chút thì Python là một ngôn ngữ rất phổ biến, nó đứng đầu chỉ số TIOBE ở thời điểm tôi viết bài này. Tuy nhiên nó không thực sự tốt về tốc độ. Thực tế hầu hết các thư viện Python đều được viết bằng các ngôn ngữ lập trình khác ví dụ :

  • Numpy viết bằng C/C++
  • PySpark được viết bằng Scala
  • TensorFlow được viết bằng C++

Bạn hiểu ý tôi rồi đấy…

Thế nên đây sẽ là những lí do tôi đưa ra để sử dụng Rust dưới dạng Python package :

  • Viết code Rust và call từ Python.
  • Giữ hết mã cơ sở (codebase) bằng Python và chỉ tăng tốc các phần tính toán chuyên sâu
  • Bạn thấy sự tương tác giữa 2 ngôn ngữ cũng “hay” :))

Dài dòng thế là đủ rồi, bắt đầu cài đặt thôi.

Để cài đặt một dự án tính Fibonaci bằng Rust trong code Python ta cần :

  • Cài đặt Rust ở máy của bạn (tất nhiên rồi) 

Tham khảo ở trang chủ của Rust nhé!

Có thể kiểm tra lại Rust đã được cài đặt thành công hay chưa bằng lệnh Rust –version

Rust version check

  • Cài đặt pyenv 

Tham khảo ở đây nhé

Okay, giờ hãy tạo một folder dự án và một file test.py trống cho dự án Python như thông thường.

Sau đó bắt đầu với việc cài đặt maturin.

Bạn có thể tham khảo ở trang chủ của Maturin nhé

Trong folder của dự án Python, cài đặt :

maturin-install

Tiếp theo hãy gõ maturin init để cài đặt maturin vào dự án Python rồi chọn PyO3

maturin-init

Note :
Nếu ở đây bạn gặp lỗi :

💥 maturin failed Caused by: rustc, the rust compiler, is not installed or not in PATH. This package requires Rust and Cargo to compile extensions. Install it through the system's package manager or via https://rustup.rs/.

Thì chứng tỏ bạn chưa cài Rust.

Hãy cài Rust tại trang chủ rồi thêm Rust vào biến môi trường PATH

  • Trên Windows: Bạn có thể thêm thư mục chứa Rust (thường là C:\Users\YourUsername\.cargo\bin) vào biến môi trường PATH. Bạn có thể thực hiện điều này bằng cách tìm kiếm “environment variables” trong cài đặt hệ thống, sau đó chỉnh sửa biến môi trường PATH và thêm đường dẫn tới thư mục bin của Rust.
  • Trên Linux/MacOS: Bạn có thể thêm dòng sau vào tệp cấu hình ~/.bashrc, ~/.bash_profile, hoặc ~/.profile:
    Chạy lệnh sau để mở tệp ~/.bash_profile trên MacOS :
    nano ~/.bash_profile
    Thêm dòng này vào cuối tệp
    export PATH="$HOME/.cargo/bin:$PATH"

    Nhấn Ctrl + O để lưu thay đổi, sau đó nhấn Enter.

    Nhấn Ctrl + X để thoát khỏi trình soạn thảo văn bản. (Nhớ ấn Y để save)

Sau đó, khởi động lại terminal hoặc chạy source ~/.bashrc (hoặc tương tự) để cập nhật biến môi trường.

 

Vậy là đã xong những bước đầu tiên rồi, giờ bắt đầu paste code Rust vào thôi, nhưng cụ thể thì paste vào đâu nhỉ

Trong folder src hãy check file lib.rs

Trong phần pyfunction hãy paste hàm tính fib vào rồi import trong pymodule.

Bạn có thể tham khảo code của tôi ở bên dưới :

paste-rust-code-to-folder

Module ở tôi đặt ở đây là rustFib nên bạn phải đổi phần name trong Maturin thành rustFib ở 2 file là Cargo.tomlpyproject.toml

update-name-to-file

update-name-to-file

Thế là xong các bước chuẩn bị, giờ đóng gói module vào để sử dụng thôi, hãy sử dụng lệnh maturin develop nhé

maturin-dev

Vậy là các bước đóng gói đã hoàn tất, giờ bật code Python lên, import hàm Fib của chúng ta rồi sử dụng thôi.

Hãy chạy file code như bình thường bằng lệnh python test.py

Rust-normal-run

Và thế là here we go, bạn đã chạy thành công code Rust trên Python.

Rất đơn giản đúng không nào.

Hãy sẵn sàng bước vào một thế giới tuyệt vời cùng Python và Rust nhé.

Add a Comment

Scroll Up