CyStack logo
  • Sản phẩm & Dịch vụ
  • Giải pháp
  • Bảng giá
  • Công ty
  • Tài liệu
Vi

vi

Mục lục

Trang chủBlogCách gọi hàm C từ Python...

Cách gọi hàm C từ Python

2 phút đọc27/08/2025
CyStack Author
Bao Tran

Web Developer

0 lượt xem
Reading Time: 2 minutes

Cách gọi hàm C từ Python

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:

  1. Tạo một tệp C (có đuôi .c) với các hàm cần thiết.
  2. Tạo một tệp shared library (có đuôi .so) bằng trình biên dịch C.
  3. Trong chương trình Python, tạo một instance của ctypes.CDLL từ tệp shared library.
  4. 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 

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

goi ham c bang Python 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))

>>>
>>> print(my_functions.square(10))
100
>>> print(my_functions.square(8))
64
>>>

goi ham c bang python

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.

Về tác giả

Bao Tran
Bao TranWeb Developer

I’m passionate about web development and sharing my insights through articles, with over 8 years of experience. I hope these sharings inspire you and help build a strong web development community. @#@ Tôi đam mê phát triển web và chia sẻ những hiểu biết của mình thông qua các bài viết, với hơn 8 năm kinh nghiệm. Tôi hy vọng những chia sẻ này sẽ truyền cảm hứng cho các bạn và giúp xây dựng một cộng đồng phát triển web mạnh mẽ.

Cập nhật thông tin mới nhấtNhận các thông tin mới nhất về mối đe dọa, báo cáo an ninh mạng từ CyStack về hòm thư điện tử của bạn

Thảo luận (0)

Đăng nhập để thảo luận

Bài viết liên quan