Cython مع C++: دليل شامل مع أمثلة عملية
مرحبًا بكم في PythonLib! اليوم سنغوص في عالم Cython الرائع — الأداة القوية التي تدمج مرونة Python مع أداء C و C++. إذا كنت تحلم يومًا بكتابة إضافات عالية الأداء لـ Python باستخدام C++ دون مغادرة بناء جملة Python المألوف، فهذه المقالة لك.
1. ما هو Cython ولماذا تحتاجه؟
Cython هي لغة برمجة قابلة للترجمة، وهي مجموعة شاملة من Python. تتيح لك كتابة كود يُترجم إلى كود C/C++ فعال، ثم يُجمّع إلى مكتبات ديناميكية (إضافات Python). الهدف الرئيسي لـ Cython هو تسريع تنفيذ برامج Python وتوفير وصول مباشر إلى مكتبات C/C++.
لماذا تحتاج هذا؟ Python، كونه لغة مفسرة، غالبًا ما يخسر في الأداء أمام اللغات المترجمة. يحل Cython هذه المشكلة من خلال تمكين:
- تسريع أجزاء الكود الحرجة بمقدار 10-100 مرة بفضل التصنيف الثابت والترجمة.
- دمج مكتبات C/C++ الموجودة (مثل OpenCV، NumPy، TensorFlow) دون الحاجة لكتابة أغلفة بلغة C خالصة.
- إنشاء وحدات Python عالية الأداء للحوسبة العلمية، معالجة البيانات، التعلم الآلي، والألعاب.
- استخدام بناء جملة Python المألوف مع تغييرات طفيفة لتحقيق سرعة C.
يشتهر Cython بشكل خاص في نظام Python العلمي (SciPy، scikit-learn، pandas)، حيث يكون الأداء أمرًا حاسمًا. كما يُستخدم في أطر الويب (مثل uWSGI) ومحركات الألعاب (Pygame).
2. تثبيت Cython
تثبيت Cython بسيط ويتم عبر مدير الحزم القياسي لـ Python — pip. للعمل مع C++، ستحتاج أيضًا إلى مترجم C++ (g++، clang++ أو MSVC).
# تثبيت Cython
pip install cython
# للتطوير، من المفيد أيضًا تثبيت setuptools
pip install setuptools
# التحقق من التثبيت
python -c "import cython; print(cython.__version__)"
ملاحظة: إذا كنت تستخدم Anaconda، فإن Cython مثبت مسبقًا. لترجمة كود C++، تأكد من تثبيت المترجم:
- لينكس:
sudo apt install g++ - ماك:
xcode-select --install - ويندوز: قم بتثبيت Build Tools for Visual Studio
3. البداية السريعة: مثال عملي بسيط
لننشئ إضافة Cython بسيطة جدًا تقوم بجمع رقمين. سيوضح هذا دورة العمل الأساسية: كتابة ملف .pyx، إنشاء setup.py، والترجمة.
الخطوة 1: أنشئ ملف hello.pyx
# hello.pyx
def add(int a, int b):
return a + b
الخطوة 2: أنشئ ملف setup.py
# setup.py
from setuptools import setup
from Cython.Build import cythonize
setup(
ext_modules=cythonize("hello.pyx", language="c++"), # language="c++" لـ C++
)
الخطوة 3: قم بترجمة الإضافة
python setup.py build_ext --inplace
بعد الترجمة، سيظهر ملف hello.cpython-3XX-*.so (أو .pyd على ويندوز).
الخطوة 4: استخدم الوحدة في Python
# test.py
import hello
print(hello.add(5, 3)) # الناتج: 8
تم! لقد أنشأت للتو أول إضافة Cython لك باستخدام C++. في الخلفية، قام Cython بتوليد كود C++، وترجمته، وإنشاء مكتبة ديناميكية.