Σήμερα κυκλοφόρησε η Python 3.12 και το InfoWorld αναφέρει ότι είναι ταχύτερη και πιο αποτελεσματική. Στο φετινό συνέδριο PyCon στο Σολτ Λέικ Σίτι της Γιούτα, οι προγραμματιστές του πυρήνα μίλησαν για τις αλλαγές, όπως οι προσπάθειες να μειωθεί η χρήση μνήμης της Python, να γίνει ο διερμηνέας ταχύτερος και να βελτιστοποιηθεί η μεταγλώττιση για πιο αποδοτικό κώδικα.
Οι υποδιερμηνείς (Subinterpreters) είναι ένας τρόπος για το runtime της Python να επιτρέπει σε πολλούς διερμηνείς να εκτελούνται μαζί σε μια ενιαία διεργασία, αντί ο κάθε διερμηνέας να εκτελείται σε δική του διεργασία, όπως λειτουργεί τώρα. Οι υποδιερμηνείς αποτελούν μέρος του runtime της Python εδώ και αρκετό καιρό, αλλά δεν υπήρχε τρόπος να αλληλεπιδρούν οι τελικοί χρήστες με αυτούς. Επίσης, οι υποδιερμηνείς δεν έχουν χρησιμοποιηθεί καλά επειδή τα εσωτερικά της Python είναι ένα χάος. Ο προγραμματιστής του πυρήνα της Python Eric Snow και η ομάδα του τακτοποίησαν αρκετά τα εσωτερικά της Python στην Python 3.12 ώστε να κάνουν τους υποδιερμηνείς χρήσιμους και προσθέτουν μια μικρή ενότητα που ονομάζεται interpreters στην τυπική βιβλιοθήκη της Python. Αυτός είναι ένας απλός τρόπος για τους προγραμματιστές να ξεκινούν υποδιερμηνείς και να εκτελούν κώδικα σε αυτούς.
Οι πρώτες δοκιμές του ίδιου του Snow με τους υποδιερμηνευτές έδειξαν ότι λειτουργούσαν πολύ καλύτερα από το threading και την πολυεπεξεργασία. Ένα παράδειγμα είναι μια απλή διαδικτυακή υπηρεσία που έκανε κάποιες εργασίες που δεσμεύονταν από την CPU. Με νήματα, μπορούσε να χειριστεί μόνο 100 αιτήσεις ανά δευτερόλεπτο, αλλά με πολυεπεξεργασία, μπορούσε να χειριστεί 600. Αλλά με υποδιεργασίες, χειριζόταν 11.500 αιτήσεις και η κλιμάκωση (scaling) δεν την επιβράδυνε πολύ. Αυτή τη στιγμή, η ενότητα διερμηνέων δεν κάνει πολλά και δεν έχει ισχυρούς τρόπους για να μοιράζονται οι υποδιερμηνείς την κατάσταση. Αλλά ο Snow πιστεύει ότι μέχρι την Python 3.13 θα υπάρχει πολύ περισσότερη λειτουργικότητα. Εν τω μεταξύ, οι προγραμματιστές ενθαρρύνονται να δοκιμάσουν.
Οι προσαρμοστικές εντολές είναι οι νέοι bytecodes που η Python 3.11 πρόσθεσε στον διερμηνέα. Αυτή η διαδικασία, που ονομάζεται "επιτάχυνση", επιτρέπει σε αυτές τις οδηγίες να αντικαθίστανται αυτόματα κατά την εκτέλεση με εκδόσεις που λειτουργούν καλύτερα για έναν συγκεκριμένο τύπο Python. Έτσι, ο διερμηνέας δεν χρειάζεται να ψάχνει τι είδους αντικείμενα είναι, γεγονός που επιταχύνει πολύ την όλη διαδικασία. Για παράδειγμα, αν μια δεδομένη πράξη πρόσθεσης λαμβάνει πάντα δύο ακέραιους αριθμούς, αυτή η εντολή μπορεί να αντικατασταθεί με μια που υποθέτει ότι οι τελεστές είναι και οι δύο ακέραιοι... Οι κώδικες εντολών εξειδίκευσης στην Python 3.12 είναι σε θέση να προσαρμόζονται καλύτερα.
Και ξεκινώντας από την Python 3.12, οι επικεφαλίδες αντικειμένων χρησιμοποιούν πλέον 96 bytes, που σύμφωνα με το InfoWorld είναι "λίγο λιγότερο από το μισό από ό,τι ήταν πριν".
Recommended Comments
There are no comments to display.
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now