Avatar ·

استدعاء C/C++ من Python: كيفية دمج الكود الأصلي في مشروع Python؟

مرحباً بالجميع! أكتب بلغة Python منذ حوالي عامين، لكنني واجهت مؤخراً مهمة أربكتني. أحتاج إلى تسريع وحدة حسابية في مشروعي. تعمل Python ببطء شديد (حلقات بملايين التكرارات)، وقررت إعادة كتابة الجزء الحرج بلغة C++. كتبت دالة بسيطة بلغة C++ لحساب أرقام فيبوناتشي: ```cpp // fibonacci.cpp #include extern "C" { int fibonacci(int n) { if (n <= 1) return n; int a = 0, b = 1, temp; for (int i = 2; i <= n; ++i) { temp = a + b; a = b; b = temp; } return b; } } ``` قمت بتجميعه إلى DLL باستخدام MinGW: `g++ -shared -o fibonacci.dll fibonacci.cpp` الآن أحاول استدعاءها من Python عبر ctypes: ```python import ctypes lib = ctypes.CDLL('./fibonacci.dll') result = lib.fibonacci(10) print(result) # يطبع 55 — يعمل! ``` لكن هذه حالة بسيطة. ماذا لو احتجت إلى تمرير مصفوفة بيانات؟