12 פיתונים לכל צורך בתכנות

כאשר אתה בוחר ב- Python לפיתוח תוכנה, אתה בוחר במערכת אקולוגית בשפה גדולה עם שלל חבילות המכסות את כל צרכי התכנות. אך בנוסף לספריות לכל דבר, החל מפיתוח GUI וכלה בלמידת מכונה, תוכלו גם לבחור בין מספר זמני הפיתון - וחלק מזמני הריצה הללו עשויים להתאים יותר למקרה השימוש שעומד לרשותכם מאשר לאחרים.

לפניכם סיור קצר בהפצות פיתון, מההטמעה הסטנדרטית (CPython) לגירסאות המותאמות למהירות (PyPy), למקרי שימוש מיוחדים (Anaconda, ActivePython), לזמן השפה השונה (Jython, IronPython), ואפילו לחיתוך- ניסויי קצה (PyCopy, MesaPy).

CPython

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

מקרי שימוש ב- CPython

מכיוון ש- CPython הוא יישום הייחוס של Python, הוא השמרני ביותר מבחינת האופטימיזציות שלו. זה לפי תכנון. אנשי התחזוקה של Python רוצים ש- CPython יהיה היישום התואם והסטנדרטי ביותר של Python שיש.

CPython היא הבחירה הטובה ביותר שלך כאשר תאימות ותאימות לתקני Python חשובים יותר מביצועים גולמיים ודאגות אחרות. CPython שימושי גם עבור המומחה שרוצה לעבוד עם Python בהתגלמותו הבסיסית ביותר, ומוכן לוותר על נוחות מסוימת. 

לדוגמה, עם CPython, אתה צריך לעשות קצת יותר הרמה כדי להקים סביבות וירטואליות. הפצות אחרות (אנקונדה, בפרט) מספקות יותר אוטומציה סביב הגדרת סביבת העבודה.

מגבלות CPython

ל- CPython אין אופטימיזציות ביצועים שנמצאו במהדורות אחרות של Python. אין מהדר JIT מקורי (בדיוק בזמן), אין ספריות מתמטיקה מואצות ואין תוספות של צד שלישי לצורך ביצוע. כל הדברים שאתה יכול להוסיף לבד, אבל הם לא ארוזים. שוב, כל זה מתוכנן, על מנת להבטיח תאימות מקסימאלית ולאפשר ל- CPython לשמש כמימוש הפניה, אך פירוש הדבר שכל אופטימיזציה לביצועים תלויה במפתח.

יתר על כן, CPython מספק רק סט בסיסי של כלים לעבודה עם Python. מנהל חבילת ה- pip, למשל, משיג ומתקין חבילות ממאגר החבילות המקורי של PyPI. פיפ אפילו תתקין קבצים בינאריים מהונדסים מראש (באמצעות פורמט חלוקת הגלגלים) אם הם מסופקים על ידי היזם, אך היא לא תתקין תלות שיש לחבילות מחוץ ל- PyPI. 

סרטון קשור: כיצד פיתון מקל על התכנות

מושלם עבור IT, פייתון מפשט סוגים רבים של עבודה, מאוטומציה של המערכת ועד לעבודה בתחומים חדישים כמו למידת מכונה.

אנקונדה פייתון

אנקונדה, המיוצרת על ידי אנקונדה בע"מ (לשעבר Continuum Analytics), מיועדת למפתחי Python הזקוקים להפצה המגובה על ידי ספק מסחרי ועם תוכניות תמיכה עבור ארגונים. מקרי השימוש העיקריים עבור אנקונדה פייתון הם מתמטיקה, סטטיסטיקה, הנדסה, ניתוח נתונים, למידת מכונה ויישומים נלווים.

מקרי שימוש באנקונדה פייתון

אנקונדה מאגדת רבות מהספריות הנפוצות ביותר המשמשות בעבודות פיתון מסחריות ומדעיות - SciPy, NumPy, Numba, וכן הלאה - ומנגישה רבות יותר מהן באמצעות מערכת ניהול חבילות מותאמת אישית.

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

ברכה נוספת היא הדרך בה אנקונדה מטפלת ברכיבים מחוץ למערכת האקולוגית של פייתון אם הם נדרשים לחבילה ספציפית. condaמנהל החבילות, שנוצר במיוחד עבור אנקונדה, ידיות התקנת שתי חבילות Python ו- צד שלישי, דרישות תוכנה חיצוניות.

מגבלות פייתון של אנקונדה

מכיוון שאנקונדה כוללת כל כך הרבה ספריות שימושיות ויכולה להתקין אפילו יותר עם כמה הקשות, הגודל של התקנת אנקונדה יכול להיות הרבה יותר גדול מ- CPython. התקנת CPython בסיסית פועלת בערך 100MB; מתקני אנקונדה יכולים לגדול לג'יגה בייט. זה יכול להיות בעיה במצבים שבהם יש לך מגבלות משאבים.

אחת הדרכים לצמצם את טביעת הרגל של אנקונדה היא להתקין את מיניקונדה, גרסה מופשטת של אנקונדה הכוללת רק את המינימום המוחלט של החלקים הדרושים כדי להתחיל לעבוד. לאחר מכן תוכל להוסיף חבילות למיניקונדה כראות עיניך, עם עין לכמה שטח כל חלק צורכת.

ActivePython

כמו אנקונדה, ActivePython נוצרת ומתוחזקת על ידי חברה למטרות רווח - במקרה זה, ActiveState, המשווקת מספר זמני הפעלה בשפה יחד עם קומודו IDE רב-שפתית.

מקרי שימוש ב- ActivePython

ActivePython מכוונת למשתמשים ארגוניים ומדעני נתונים - אנשים שרוצים להשתמש ב- Python, אך לא רוצים להשקיע מאמצים רבים בהרכבה וניהול של התקנת Python. ActivePython משתמש pipבמנהל החבילות הרגיל של Python , אך מספק גם כמה מאות ספריות נפוצות כחבילות מאומתות, יחד עם כמה ספריות נפוצות עם תלות של צד שלישי כגון ספריית Intel Core Kernel.

מגבלות של ActivePython

יש חסרון פוטנציאלי בגישה של ActivePython לטיפול בחבילות עם תלות חיצונית. אם ברצונך לשדרג לגרסה חדשה יותר של פרויקט עם תלות מורכבת (למשל, TensorFlow), יהיה עליך לשדרג גם את התקנת ActivePython שלך. בסביבות שבהן פיתוח נוטה להיות קשור לגרסה ספציפית של פרויקט, זה פחות נושא. אך בסביבות בהן פיתוח נוטה לעקוב אחר גרסאות חדשניות, הדבר עלול להוות בעיה.

PyPy

תחליף טיפה למתורגמן CPython, PyPy משתמש באוסף בדיוק בזמן (JIT) כדי לזרז את ביצוע תוכניות Python. בהתאם למשימה שמבוצעת, רווחי הביצוע יכולים להיות דרמטיים. 

מקרי שימוש ב- PyPy

תלונה נפוצה על פייתון בדרך כלל, ועל CPython בפרט, היא מהירות. כברירת מחדל פייתון פועל לאט פי כמה מ- C, לפעמים מאות פעמים איטי יותר. PyPy JIT אוסף קוד פיתון לשפת המכונה, ומספק מהירות של 7.7x לעומת CPython בממוצע. משימות מסוימות עוברות פי 50 מהר יותר. 

החלק הכי טוב הוא שנדרש מעט מאמץ מצד היזם כדי לפתוח רווחים אלה. החלף את CPython ל- PyPy, ולרוב סיימת.

מגבלות PyPy

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

חסרון אפשרי נוסף עם PyPy הוא גודל זמן הריצה. זמן הריצה המרכזי של CPython ב- Windows, למעט הספרייה הרגילה, הוא סביב 4MB, ואילו זמן הריצה של PyPy הוא סביב 32MB. שים לב גם ש- PyPy הדגיש זמן רב את ענף ה- 2.x של Python, כך, למשל, PyPy for Python 3.x זמין כרגע עבור Windows רק בגרסת מבחן בטא של 32 סיביות. (PyPy זמין בגרסאות 64 סיביות עבור Python 2.x ו- 3.x עבור Linux ו- MacOS.)

ג'ייתון

ה- JVM (Java Virtual Machine) משמש זמן הריצה להרבה מאוד שפות מלבד Java. הרשימה הארוכה כוללת את גרובי, סקאלה, קלוז'ור, קוטלין, וכן, פייתון, בדרך של פרויקט ג'יתון.

מקרי שימוש בג'יתון

Jython אוסף קוד Python 2.x ל- JVM bytecode ומריץ את התוכנית המתקבלת ב- JVM. במקרים מסוימים תוכנית שהורכבה מ- Jython תפעל מהר יותר ממקבילתה ל- CPython, אך לא תמיד.

היתרון הגדול ביותר שמציעה ג'יתון הוא יכולת פעולה הדדית ישירה עם שאר המערכת האקולוגית בג'אווה. Java משמש באופן נרחב יותר מאשר Python. הפעלת Python ב- JVM מאפשרת למפתחי Python להשתמש במערכת אקולוגית עצומה של ספריות ומסגרות שאחרת לא יוכלו להשתמש בהן. באותה מידה, ג'יתון מאפשר למפתחי ג'אווה להשתמש בספריות פייתון. 

מגבלות ג'יתון

החיסרון הגדול ביותר בג'יתון הוא שהוא תומך רק בענף 2.x של פייתון. התמיכה ב- Python 3.x נמצאת בפיתוח אך הייתה זה זמן מה. עד כה שום דבר לא שוחרר.

שימו לב גם שבזמן שג'יתון מביא את פייתון ל- JVM, הוא לא מביא את פייתון לאנדרואיד. מכיוון שאין כרגע נמל של ג'יתון לאנדרואיד, לא ניתן להשתמש בג'יתון לפיתוח יישומי אנדרואיד.

IronPython

כמו שג'יתון הוא יישום של Python ב- JVM, IronPython הוא יישום של Python בזמן הריצה של .Net, או CLR (Common Language Runtime). IronPython משתמש ב- DLR (Dynamic Language Runtime) של ה- CLR כדי לאפשר לתוכניות פייתון לפעול באותה מידה של דינמיות שהם עושים ב- CPython.

מקרי שימוש ב- IronPython

כמו ג'יתון, גם IronPython הוא גשר. מקרה השימוש הגדול הוא יכולת פעולה הדדית בין פייתון ליקום .Net. ניתן לטעון מכלולי .Net קיימים בתוכניות IronPython באמצעות תחביר הייבוא ​​המקורי של Python ומניפולציה של אובייקטים. אפשר גם לאסוף קוד IronPython לאסיפה ולהפעיל אותו כמו שהוא או להפעיל אותו משפות אחרות. עם זאת, שים לב כי לא ניתן לגשת ישירות ל- MSIL (שפת הביניים של מיקרוסופט) במכלול משפות .Net אחרות, מכיוון שהוא אינו תואם למפרט השפה הנפוצה.

מגבלות IronPython

כמו ג'ייתון, IronPython תומך כרגע רק בפייתון 2.x. עם זאת, העבודה מתבצעת ליצירת יישום IronPython 3.x.

WinPython

כפי שהשם מרמז, WinPython היא הפצה של Python שנוצרה במיוחד עבור משתמשי Microsoft Windows. המהדורות הקודמות של CPython עבור Windows לא תוכננו היטב, וקשה היה למשתמשי Windows לנצל את מלוא היתרונות של המערכת האקולוגית של Python. מהדורת Windows של CPython השתפרה עם הזמן, אך WinPython עדיין מציעה דברים רבים שלא נמצאו ב- CPython.

מקרי שימוש ב- WinPython

האטרקציה העיקרית של WinPython היא שמדובר במהדורה עצמאית של Python. אין צורך להתקין אותו על המכונה בה היא פועלת; רק צריך לפרק אותו לספריה. זה הופך את WinPython לשימושי במקרים שבהם לא ניתן להתקין תוכנה במערכת נתונה, בתרחישים בהם צריך להפיץ זמן ריצה של Python שהוגדר מראש יחד עם היישומים להפעלה עליו, או כאשר כמה מהדורות של Python צריכות לרוץ זו לצד זו. בלי להפריע זה לזה.

WinPython גם מקבץ שורה של חבילות מכוונות מדע נתונים - NumPy, Pandas, SciPy, Matplotlib וכו '- כך שניתן יהיה להשתמש בהן מיד, ללא שלבי התקנה נוספים. כלול גם מהדר C / C ++ מכיוון שמכונות Windows רבות אינן כוללות מכשיר זה, ורבות סיומות פייתון דורשות או יכולות לעשות בו שימוש.

מגבלות WinPython

מגבלה אחת של WinPython היא שהיא עשויה לכלול יותר מדי כברירת מחדל עבור מקרי שימוש מסוימים. כדי לתקן זאת, יוצרי WinPython מספקים גרסת "אפס" של כל מהדורת WinPython, המכילה את ההתקנה המינימלית ביותר האפשרית של המוצר. ניתן להוסיף חבילות נוספות מאוחר יותר, באמצעות pipהכלי של Python עצמו או עם כלי ה- WPPM של WinPython.

נייד פייתון

Python Portable הוא זמן הריצה של CPython בחבילה עצמאית. זה באדיבות אוסף PortableDevApps של יישומים דומים באופן עצמאי.

מקרי שימוש ניידים של Python

בדומה ל- WinPython, Python Portable כולל שלל חבילות למחשוב מדעי - Matplotlib, Numba, SymPy, SciPy, Cython, ואחרים. כמו בדומה ל- WinPython, Python Portable פועל ללא צורך להתקין רשמית על מארח Windows; זה יכול לחיות בכל ספריה או בכונן נשלף. כלול גם את ספיידר IDE ומנהל חבילות ה- pip של פייתון, כך שתוכל להוסיף, לשנות או להסיר חבילות לפי הצורך.

מגבלות ניידות של פייתון

בניגוד ל- WinPython, Python Portable אינו כולל מהדר C / C ++. יהיה עליך לספק מהדר C כדי להשתמש בקוד שנכתב עם Cython (וכך הוא נערך ל- C).

הפצות פיתון ניסיוניות

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

אם אתה חי עם בסיס קוד של Python 2.x בעתיד הנראה לעין, כדאי לך לבדוק את המאמר שלנו על הפצות פיתון ניסיוניות השומרות על Python 2.x בחיים.

MicroPython

MicroPython מספק תת קבוצה מינימלית של שפת ה- Python שיכולה לפעול על חומרה נמוכה במיוחד כגון מיקרו-בקרים. MicroPython מיישם את Python 3.4 עם כמה הבדלים. קל לכתוב קוד MicroPython אם אתה מכיר Python, אך ייתכן שקוד קיים לא פועל כפי שהוא.

פיקופיה