Cython

שפת תכנות מוויקיפדיה, האנציקלופדיה החופשית

Cython היא שפת תכנות דמוית פייתון המאפשרת קריאה לפונקציות בשפות C/C++ ואפשרות הכרזה מראש על טיפוס המשתנים (טיפוסיות סטטית).

עובדות מהירות תאריך השקה, הושפעה על ידי ...
Cython
Thumb
תאריך השקה 28 ביולי 2007
הושפעה על ידי פייתון
רישיון רישיון אפאצ'י
cython.org
סגירה

Cython מאפשרת כתיבת מודולי הרחבה ל-CPython. קוד פייתון רגיל יכול להשתמש בהרחבות אלו בצורה דומה למודולי פייתון. בשונה מקוד פייתון, Cython מתקמפל לשפת C, והקוד עושה שימוש בקריאות ישירות ל-CPython ולספרייה הסטנדרטית. הודות לטכניקה זו זמן הריצה של פונקציות הנכתבות ב-Cython לרוב קצר יותר, אך יוצר תלות בין המודול לבין מפרש הפייתון והספרייה הסטנדרטית.

Cython היא נגזרת של שפת Pyrex והיא מרחיבה את האופטימזציות והיכולות שלה. השפה נוצרה כפיצול מ-Pyrex ב-2007 על ידי מפתחי התוכנה המתמטית Sage, שיצרו את SageX. לאחר שמתכנתים רבים הורידו את Sage רק כדי להשתמש ב-SageX, וכיוון שמתכנתים של הרחבות אחרות (LXML), תחזקו פיצולים משלהם לPyrex, הוחלט להוציא את SageX מSage, ולאחדו עם cython-lxml.

Cython נפוצה בשימוש בקרב מתכנתי פייתון המפתחים תוכנות וספריות מדעיות, ובפרט תוכנת המתמטיקה Sage וספריות הפייתון הפופולריות SciPy, pandas ו-scikit-learn.

דוגמת קוד

Thumb
Hello World ב-Cython

מקובל להשתמש בהרחבת distutils לצורך קימפול, ומאחר ש-Cython מתממשקת עם Python C API מקובל להגדיר מספר קבצים:

  • קובץ setup.py שעושה שימוש ב-distutils לצורך בנייה ויצירת המודול
  • תוכנית פייתון שעושה שימוש במודול המרחיב
  • קובצי קוד Cython

דוגמת הקוד הבאה מסבירה את תהליך הקימפול וההרצה של תוכנית פשוטה:

# hello.pyx - Python Module, this code will be translated to C by Cython.
def say_hello():
    print "Hello World!"
# launch.py - Python stub loader, loads the module that was made by Cython.

# This code is always interpreted, like normal Python.
# It is not compiled to C.

import hello
hello.say_hello()
# setup.py - unnecessary if not redistributing the code, see below
from distutils.core import setup
from Cython.Build import cythonize

setup(name = 'Hello world app',
      ext_modules = cythonize("*.pyx"))

לקימפול, ואחר כך להרצת התוכנית נדרשות הפקודות הבאות:

$ python setup.py build_ext --inplace
$ python launch.py

קישורים חיצוניים

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.