Tôi muốn gọi một thư viện C từ một ứng dụng Python. Tôi không muốn bọc toàn bộ API, chỉ các hàm và kiểu dữ liệu có liên quan đến trường hợp của tôi. Theo tôi thấy, tôi có ba lựa chọn:
- Tạo một mô-đun mở rộng thực tế trong C. Có thể là quá mức cần thiết và tôi cũng muốn tránh chi phí viết bài mở rộng.
- Sử dụng Cython để hiển thị các phần có liên quan từ thư viện C sang Python.
- Làm toàn bộ trong Python, sử dụng
ctypes
để giao tiếp với thư viện bên ngoài.
Tôi không chắc liệu 2) hay 3) là lựa chọn tốt hơn. Ưu điểm của 3) là ctypes
một phần của thư viện chuẩn và mã kết quả sẽ là Python thuần túy - mặc dù tôi không chắc lợi thế đó thực sự lớn đến mức nào.
Có nhiều lợi thế / bất lợi với một trong hai sự lựa chọn? Cách tiếp cận nào bạn đề nghị?
Chỉnh sửa: Cảm ơn tất cả các câu trả lời của bạn, họ cung cấp một nguồn tài nguyên tốt cho bất cứ ai muốn làm điều gì đó tương tự. Tất nhiên, quyết định vẫn được đưa ra cho một trường hợp duy nhất mà không có câu trả lời "Đây là điều đúng". Đối với trường hợp của riêng tôi, có lẽ tôi sẽ đi với ctypes, nhưng tôi cũng mong muốn được thử Cython trong một số dự án khác.
Với việc không có câu trả lời đúng duy nhất, việc chấp nhận một câu trả lời có phần tùy tiện; Tôi đã chọn câu trả lời của FogleBird vì nó cung cấp một số thông tin chi tiết tốt về ctypes và hiện tại nó cũng là câu trả lời được bình chọn cao nhất. Tuy nhiên, tôi đề nghị đọc tất cả các câu trả lời để có cái nhìn tổng quan tốt.
Cảm ơn một lần nữa.