Saya ingin memanggil perpustakaan C dari aplikasi Python. Saya tidak ingin membungkus seluruh API, hanya fungsi dan tipe data yang relevan dengan kasus saya. Seperti yang saya lihat, saya punya tiga pilihan:
- Buat modul ekstensi aktual dalam C. Mungkin berlebihan, dan saya juga ingin menghindari overhead belajar menulis ekstensi.
- Gunakan Cython untuk mengekspos bagian yang relevan dari pustaka C ke Python.
- Lakukan semuanya dengan Python, gunakan
ctypes
untuk berkomunikasi dengan perpustakaan eksternal.
Saya tidak yakin apakah 2) atau 3) adalah pilihan yang lebih baik. Keuntungan dari 3) adalah ituctypes
adalah bagian dari perpustakaan standar, dan kode yang dihasilkan akan menjadi Python murni - walaupun saya tidak yakin seberapa besar sebenarnya keuntungan itu.
Apakah ada lebih banyak keuntungan / kerugian dengan salah satu pilihan? Pendekatan mana yang Anda rekomendasikan?
Sunting: Terima kasih atas semua jawaban Anda, mereka menyediakan sumber yang bagus untuk siapa pun yang ingin melakukan sesuatu yang serupa. Keputusan, tentu saja, masih harus dibuat untuk satu kasus — tidak ada jawaban "Ini adalah hal yang benar". Untuk kasus saya sendiri, saya mungkin akan menggunakan ctypes, tapi saya juga berharap untuk mencoba Cython di beberapa proyek lain.
Dengan tidak adanya jawaban yang benar, menerima jawaban agak sewenang-wenang; Saya memilih jawaban FogleBird karena memberikan beberapa wawasan yang baik tentang ctypes dan saat ini juga merupakan jawaban dengan suara tertinggi. Namun, saya sarankan untuk membaca semua jawaban untuk mendapatkan gambaran yang bagus.
Terima kasih lagi.