Chuyển code c++ sang python
Ta thường sử dụng C/C++ cho những công việc yêu cầu tốc độ xử lý cũng như hiệu năng cao. Vậy làm thế nào để ta có thể gọi các hàm được cung cấp trong các thư viện C từ Python? Bài viết này trả lời câu hỏi trên. Python cung cấp module Load thư viện độngĐể load một thư viện động, ta sử dụng hàm
Gọi hàmSau khi đã load được thư viện, ta có thể gọi hàm C như những hàm Python bình thường. Dưới đây ta gọi hàm
None, integers, bytes objects và (unicode) strings là các kiểu dữ liệu căn bản của Python và có thể được truyền trực tiếp như là đối số khi gọi hàm C. None tương ứng với NULL pointer, bytes objects và strings
được sử dụng như là con trỏ tới vùng nhớ chứa dữ liệu của nó ( Dưới đây ta sẽ tìm hiểu rõ hơn về các kiểu dữ liệu mà ctypes hỗ trợ. Các kiểu dữ liệu cơ bảnctypes định nghĩa một số kiểu dữ liệu tương ứng với các kiểu dữ liệu cơ bản của C: Tất cả các kiểu này có thể được khởi tạo như sau:
Và có thể thày đổi gía trị của nó:
Truyền con trỏ trong PythonNhiều hàm trong C yêu cầu đối số truyền vào là một con trỏ, vì vậy ctypes cung cấp cho cho chúng ta hàm
Làm thế nào để ta có thể gọi hàm đấy trong Python?
Khai báo Structs và UnionsĐể khai báo structures và unions, ta kế thừa 2 class tương ứng trong ctypes là Gỉa sử ta có khai báo struct và union trong C:
Ta có đoạn code tương ứng trong Python, sử dụng class Structure và Union:
Đoạn code trên cũng minh họa khai báo mảng trong python. Happy coding! |