
Bạn muốn tận dụng tốc độ xử lý của ngôn ngữ C nhưng vẫn giữ sự linh hoạt của Python? Bài viết này sẽ hướng dẫn chi tiết cách gọi hàm C từ Python, giúp bạn viết code hiệu quả, tối ưu hiệu suất mà không mất đi sự tiện lợi của Python.
Bạn có thể gọi một hàm C từ Python bằng cách sử dụng module ctypes.
Quy trình này gồm các bước sau:
- Tạo một tệp C (có đuôi .c) với các hàm cần thiết.
- Tạo một tệp shared library (có đuôi .so) bằng trình biên dịch C.
- Trong chương trình Python, tạo một instance của ctypes.CDLL từ tệp shared library.
- Cuối cùng, gọi hàm C theo định dạng:
{CDLL_instance}.{tên_hàm}({các_tham_số_của_hàm}).
Bước 1: Tạo tệp C với các hàm
#include <stdio.h>
int square(int i) {
return i * i;
}
Tạo tệp C với các hàm Chúng ta có một hàm C đơn giản sẽ trả về bình phương của một số nguyên. Mã hàm này được lưu trong tệp có tên là my_functions.c.
Bước 2: Tạo tệp Shared Library
Bạn có thể dùng lệnh sau để tạo tệp shared library từ tệp nguồn C.
$ cc -fPIC -shared -o my_functions.so my_functions.c
Bước 3: Gọi hàm C từ chương trình Python
>>> from ctypes import *
>>> so_file = "/Users/pankaj/my_functions.so"
>>> my_functions = CDLL(so_file)
>>>
>>> print(type(my_functions))
<class 'ctypes.CDLL'>
>>>
>>> print(my_functions.square(10))
100
>>> print(my_functions.square(8))
64
>>>

Nếu bạn thay đổi tệp chương trình C, bạn sẽ phải tạo lại tệp shared library.
Kết luận
Cách triển khai Python mặc định được viết bằng ngôn ngữ lập trình C và được gọi là CPython. Vì vậy, việc sử dụng các hàm C trong một chương trình Python không phải là điều hiếm gặp. Trong bài hướng dẫn này, chúng ta đã học cách dễ dàng gọi các hàm C trong một chương trình Python.