Η Python 3.14 προσφέρει πραγματικό παραλληλισμό, ασφαλή πρότυπα και μια πιο ομαλή εμπειρία

  • Οι αργές σχολιασμοί και οι συμβολοσειρές t παρέχουν απόδοση και ασφαλή πρότυπα.
  • Οι υποδιερμηνείς, οι βελτιώσεις σε ελεύθερα νήματα και το λιγότερο κλείδωμα αυξάνουν τον παραλληλισμό.
  • Το Zstandard, τα νέα εργαλεία asyncio και οι πιο ξεκάθαρες διορθώσεις σφαλμάτων κάνουν την καθημερινή ζωή ευκολότερη.
  • Η ασφαλής διερμηνεία σφαλμάτων και ένας νέος διερμηνέας με ουρές κλήσεων βελτιώνουν την ορατότητα και την ταχύτητα.

Python 3.14

Η Python συνεχίζει να αναπτύσσεται και να εδραιώνεται ως βασικό εργαλείο στην επιστήμη δεδομένων, το backend, τον αυτοματισμό και τη διδασκαλία, και στην έκδοση 3.14. Έρχεται γεμάτο με αλλαγές που επηρεάζουν την απόδοση, την ταυτόχρονη χρήση και την καθημερινή εμπειρία.Σε αυτόν τον οδηγό, σας λέμε, με παραδείγματα και συμφραζόμενα, τι κρύβεται πίσω από αυτά τα νέα ακρωνύμια και τις ενότητες που θα βλέπετε παντού και γιατί. Αυτές οι βελτιώσεις επηρεάζουν τόσο τους αρχάριους όσο και τις ομάδες που ξεκινούν την παραγωγή..

Πέρα από τον συνηθισμένο θόρυβο που περιβάλλει κάθε κυκλοφορία, εδώ έχουμε συγκεντρώσει τα πιο σημαντικά πράγματα που έχουν ανακοινωθεί και καταγραφεί επίσημα, μαζί με πρακτικές λεπτομέρειες που κοινοποιήθηκαν από προγραμματιστές που χρησιμοποιούν ήδη την έκδοση 3.14. Από χαλαρές σχολιασμούς μέχρι υποδιερμηνείς στην τυπική βιβλιοθήκη, συμπεριλαμβανομένων των t-strings, του Zstandard, του νέου ασφαλούς προγράμματος εντοπισμού σφαλμάτων και βελτιώσεις στο REPL., τα ουσιώδη εξηγούνται με σαφήνεια εδώ.

Επισκόπηση: Τι αλλάζει πραγματικά στην Python 3.14

Η Python 3.14 κυκλοφόρησε στις 7 Οκτωβρίου και συνδυάζει αλλαγές στην υλοποίηση, το API και την τυπική βιβλιοθήκη που αγγίζουν διάφορους κρίσιμους τομείς. Η επίσημη τεκμηρίωση διατηρεί τα παραδοσιακά αρχεία "Τι νέο υπάρχει" και "Αλλαγές αρχείου καταγραφής" που δημιουργήθηκαν από το Misc/NEWS.d, τα οποία χρησιμεύουν ως ένας λεπτομερής χάρτης για την προβολή, γραμμή προς γραμμή, των προσθηκών. Αν θέλετε τη συνολική εικόνα: πιο χρήσιμος παραλληλισμός, νέες δυνατότητες δημιουργίας προτύπων και εντοπισμού σφαλμάτων, εκσυγχρονισμένη συσκευασία συμπίεσης και ένα σωρό πολύ πιο χρήσιμα μηνύματα σφάλματος..

Στον πραγματικό κόσμο, αυτό μεταφράζεται σε προγράμματα με λιγότερη διαμάχη νημάτων, περισσότερες επιλογές για παραλληλοποίηση χωρίς κλείδωμα του GIL, λιγότερες εκπλήξεις σχολιασμού και ένα διαδραστικό κέλυφος που βοηθάει περισσότερο παρά εμποδίζει. Επιπλέον, η ίδια η κοινότητα επισημαίνει πρακτικές εξελίξεις όπως το χρώμα στο REPL και το PDB, βελτιώσεις στο argparse και το unittest, και βοηθητικά προγράμματα stdlib που απλοποιούν τις καθημερινές εργασίες..

Αναβαλλόμενες σχολιασμοί: PEP 649 + PEP 749

Μία από τις πιο σημαντικές αλλαγές είναι η αργή αξιολόγηση των σχολιασμών σε συναρτήσεις, κλάσεις και ενότητες. Τώρα, αντί να αξιολογούνται όταν ορίζονται, αποθηκεύονται σε ειδικές συναρτήσεις και επιλύονται όταν χρειάζεται. Αυτό μειώνει το κόστος του χρόνου ορισμού, αποφεύγει τα σφάλματα που οφείλονται σε προωθητικές αναφορές και κάνει την εργασία με μεγάλους τύπους ή ακριβές εισαγωγές πολύ πιο υποφερτή..

Για να τα ελέγξετε, εμφανίζεται η ενότητα annotationlib, με τρεις βασικές μορφές: VALUE (αξιολογείται σε τιμές χρόνου εκτέλεσης όπως πριν), FORWARDREF (τα ονόματα των σημάτων δεν έχουν ακόμη οριστεί) και STRING (επιστρέφει τις σημειώσεις ως κείμενο). Για τις μετεγκαταστάσεις, το μπλοκ μεταφοράς στο επίσημο έγγραφο παρέχει οδηγίες σχετικά με το πότε πρέπει να αλλάξετε κώδικα, αν και στις περισσότερες περιπτώσεις δεν θα χρειαστεί να αλλάξει τίποτα..

Μια σημαντική λεπτομέρεια: αν χρησιμοποιείτε from __future__ import annotations, η συγκεκριμένη σημασιολογία του εξακολουθεί να ισχύει, επομένως ελέγξτε τα εργαλεία πληκτρολόγησης. Ο συνολικός στόχος είναι η βελτίωση της απόδοσης και της χρηστικότητας, διατηρώντας παράλληλα τη δυνατότητα ενδοσκόπησης όταν είναι απαραίτητο..

Υποδιερμηνείς στην τυπική βιβλιοθήκη: PEP 734

Το CPython επιτρέπει πολλαπλούς διερμηνείς μέσω του C-API εδώ και δεκαετίες, αλλά η έκδοση 3.14 τους φέρνει σε όλους με concurrent.interpreters. Αυτό ανοίγει την πόρτα σε πιο ανθρώπινη ταυτόχρονη λειτουργία και πραγματικό παραλληλισμό πολλαπλών πυρήνων χωρίς να χρειάζεται πάντα να τραβάτε διεργασίες..

Τι κερδίζετε; Μοντέλα όπως CSP ή μοντέλα ηθοποιών, απομόνωση από προεπιλογή με δυνατότητα ρητής κοινής χρήσης και χαμηλότερη κατανάλωση πόρων σε σχέση με τις διεργασίες. Για εφαρμογές που απαιτούν μεγάλη χρήση CPU, καθώς οι διερμηνείς 3.12 είναι αρκετά απομονωμένοι ώστε να εκτελούνται παράλληλα, ξεκλειδώνοντας σενάρια που προηγουμένως υπέφεραν από το GIL..

Υπάρχουν περιορισμοί: η εκκίνηση του διερμηνέα δεν έχει ακόμη βελτιστοποιηθεί, η χρήση μνήμης θα μπορούσε να βελτιωθεί, λίγες πραγματικές επιλογές κοινής χρήσης πέραν αυτού memoryview, και οι περισσότερες από τις επεκτάσεις PyPI χωρίς πλήρη υποστήριξη. Τα καλά νέα είναι ότι το πρότυπο περιλαμβάνει ήδη υποστήριξη, υπάρχει ένα InterpreterPoolExecutor en concurrent.futures, και η κοινότητα μετακινεί τσιπ σε Cython, pybind11, nanobind ή PyO3.

Πρότυπα T-string: PEP 750

Φτάνουν τα T-strings, ένας μηχανισμός προτύπου με σύνταξη f-string αλλά που επιστρέφει ένα αντικείμενο. Template με ξεχωριστά στατικά μέρη και παρεμβολές, όχι ένα str άκρο. Αυτό σας επιτρέπει να επεξεργάζεστε περιεχόμενο πριν από την ένταξή του, να απολυμαίνετε την εισαγωγή δεδομένων από τον χρήστη και να συναρμολογείτε ελαφριές DSL με μεγαλύτερη ασφάλεια..

Γράφεις με πρόθεμα t αντί για f, επαναλαμβάνετε το Template και επεξεργάζεστε κάθε τμήμα ή παρεμβολή σύμφωνα με τις προτιμήσεις σας. Από την επεξεργασία HTML escape έως την κατασκευή δομών τύπου DOM ή πρότυπα που δέχονται λεξικά χαρακτηριστικών, θα αποκτήσετε ευελιξία χωρίς να θυσιάσετε τη σαφήνεια..

Η Python 3.14 εισάγει μια ασφαλή διεπαφή για εξωτερικό εντοπισμό σφαλμάτων: PEP 768

Η έκδοση 3.14 εισάγει μια διεπαφή μηδενικής επιβάρυνσης για εντοπισμό σφαλμάτων που επιτρέπει στα προγράμματα εντοπισμού σφαλμάτων και στα προγράμματα δημιουργίας προφίλ να συνδέονται με ασφάλεια σε διεργασίες Python που εκτελούνται. Τέλος οι μη ασφαλείς λύσεις: τώρα υπάρχουν ασφαλή σημεία εκτέλεσης για την εισαγωγή κώδικα εντοπισμού σφαλμάτων χωρίς να παρεκκλίνουμε από την κανονική διαδρομή διερμηνέα..

Για να διευκολυνθεί αυτό, εκτίθεται sys.remote_exec(), το οποίο στέλνει κώδικα προς εκτέλεση στο επόμενο ασφαλές σημείο της διεργασίας-στόχου. Το PEP περιγράφει το υποκείμενο πρωτόκολλο, συμπεριλαμβανομένων των ελέγχων ασφαλείας για τον περιορισμό της πρόσβασης και την αποτροπή κατάχρησης, κάτι που είναι κλειδί στα συστήματα υψηλής διαθεσιμότητας..

Νέος τύπος διερμηνέα με ουραίες κλήσεις σε C

Μια άλλη τεχνική καινοτομία είναι ένας εναλλακτικός διερμηνέας που αλυσιδώνει τις κλήσεις ουράς μεταξύ μικρών συναρτήσεων C που υλοποιούν κωδικούς λειτουργίας, αντί για έναν μεγάλο. switch. Σε υποστηριζόμενες πλατφόρμες και μεταγλωττιστές (Clang 19+ σε x86-64 και AArch64), τα αρχικά benchmarks δείχνουν γεωμετρική βελτίωση 3% έως 5%..

Είναι opt-in και συνιστάται η ενεργοποίηση του PGO επειδή είναι η αποδεδειγμένη ρύθμιση που αποφέρει κέρδη. Ενεργοποιείται με την επιλογή μεταγλώττισης --with-tail-call-interpκαι το GCC αναμένεται να το υποστηρίξει στο μέλλον.

Λειτουργία ελεύθερης σπειρώματος: PEP 703 και πρακτική απόδοση

Η λειτουργία GIL-free, που εισήχθη στην έκδοση 3.13, κάνει ένα άλμα προς τα εμπρός στην έκδοση 3.14: οι αλλαγές C-API που προτείνονται από το PEP 703 ολοκληρώνονται και οι λύσεις αντικαθίστανται από μόνιμες λύσεις. Ο εξειδικευμένος προσαρμοστικός διερμηνέας (PEP 659) είναι πλέον ενεργός σε αυτήν τη λειτουργία, η οποία μαζί με άλλες βελτιστοποιήσεις μειώνει την ποινή.

Σήμερα, η απώλεια στο single-threading είναι περίπου 5-10% ανάλογα με την πλατφόρμα και τον μεταγλωττιστή, μια λογική τιμή σε σύγκριση με το κέρδος στον πραγματικό παραλληλισμό. Στα Windows, κατά τη μεταγλώττιση επεκτάσεων για την έκδοση free-threaded, πρέπει να ορίσετε Py_GIL_DISABLEDκαι κατά τον χρόνο εκτέλεσης μπορείτε να ελέγξετε τη ρύθμιση μέσω sysconfig.get_config_var().

Επιπλέον, εμφανίζεται η σημαία -X context_aware_warnings για τον έλεγχο των φίλτρων προειδοποίησης ανά περιβάλλον, ενεργοποιημένο από προεπιλογή σε δομές χωρίς GIL και απενεργοποιημένο σε εκείνες που το διατηρούν. Φτάνει επίσης thread_inherit_context έτσι ώστε τα δημιουργημένα νήματα να κληρονομούν το Context() του επικαλεστή, επηρεάζοντας τα φίλτρα του warnings, decimal και άλλα API με μεταβλητές περιβάλλοντος.

Πολύ πιο χρήσιμα μηνύματα σφάλματος στην Python 3.14

Ο διερμηνέας προτείνει πλέον λέξεις-κλειδιά όταν ανιχνεύει έναν όρο παρόμοιο με μια λέξη-κλειδί Python, βοηθώντας σας να εντοπίσετε γρήγορα τυπογραφικά λάθη. Περιπτώσεις όπως η γραφή "print" αντί για "print" έχουν ήδη διορθωθεί με άμεσες υποδείξεις, αν και δεν θα καλυφθούν όλες οι παραλλαγές..

Υπάρχουν συγκεκριμένα μηνύματα για elif μετά από μια else, και σε υποθετικές εκφράσεις υποδεικνύει πού λείπει ένα expression αν βάλεις μια πρόταση μετά else o pass/break/continue πριν if. Τα σφάλματα που προκαλούνται από λανθασμένα κλειστές συμβολοσειρές και ασύμβατα προθέματα σε συμβολοσειρές βελτιώνονται επίσης..

Περισσότερες βελτιώσεις: πιο σαφή μηνύματα κατά τη χρήση as με ασύμβατους στόχους στις εισαγωγές, εκτός από την αντιστοίχιση μοτίβων· λεπτομέρεια κατά την προσπάθεια τοποθέτησης ενός μη κατακερματιζόμενου αντικειμένου dict o set; και ειδοποιήσεις όταν εισάγετε έναν διαχειριστή συγχρονισμένου περιβάλλοντος με async with ή αντίστροφα. Όλα προστίθενται έτσι ώστε ο διερμηνέας να μπορεί να σας πει το τι, το πού και το γιατί..

Σύγχρονη συμπίεση στο stdlib: PEP 784 και Zstandard

Το πακέτο γεννιέται compression, το οποίο επανεξάγει lzma, bz2, gzip y zlib ως compression.lzma, compression.bz2, compression.gzip y compression.zlib. Αυτά τα νέα ονόματα είναι η προτιμώμενη διαδρομή από την έκδοση 3.14, αν και οι κλασικές διαδρομές δεν έχουν υποτιμηθεί προς το παρόν..

Το αστέρι είναι compression.zstd, εγγενής υποστήριξη για το Zstandard με συνδέσεις στη βιβλιοθήκη zstd του Meta. Αποκτάτε γρήγορα και αποτελεσματικά API και άμεση υποστήριξη για αρχεία Zstandard σε tarfile, zipfile y shutil, χωρίς εγκατάσταση εξωτερικών πακέτων.

Ενδοσκόπηση Asyncio από τη γραμμή εντολών

Μπορείτε πλέον να επιθεωρήσετε τις διεργασίες Python που εκτελούνται με ασύγχρονες εργασίες χρησιμοποιώντας python -m asyncio ps PID y python -m asyncio pstree PID. Η υποεντολή ps εμφανίζει έναν επίπεδο πίνακα εργασιών, ονομάτων και στοίβων, ενώ το pstree δημιουργεί ένα ασύγχρονο δέντρο κλήσεων..

Αυτό είναι ιδιαίτερα χρήσιμο σε μεγάλα ή μπλοκαρισμένα προγράμματα, καθώς ανιχνεύει πού βρίσκεται το σημείο συμφόρησης, ποιες εργασίες περιμένουν και πώς οι συνρουτίνες σχετίζονται μεταξύ τους. Εάν υπάρχουν κύκλοι στο γράφημα αναμονής, το εργαλείο τους ανιχνεύει και παραθέτει τις προβληματικές διαδρομές..

Έλεγχος ταυτόχρονης προειδοποίησης σε Python 3.14

warnings.catch_warnings Μπορείτε να χρησιμοποιήσετε μια μεταβλητή περιβάλλοντος για φίλτρα ειδοποιήσεων εάν ενεργοποιήσετε τη σημαία context_aware_warnings μέσω -X ή μεταβλητή περιβάλλοντος. Με αυτόν τον τρόπο, ο χειρισμός των προειδοποιήσεων είναι προβλέψιμος όταν αναμειγνύετε νήματα ή ασύγχρονες εργασίες και δεν επικαλύπτονται μεταξύ τους..

Εμπειρία χρήστη Python 3.14: Κονσόλα, Argparse, UnitTest και άλλα

Όποιος έχει χρησιμοποιήσει την έκδοση 3.14 ως κύρια έκδοση για αρκετούς μήνες τονίζει το χρώμα στην καθημερινή εμπειρία: επισήμανση σύνταξης στο REPL και το PDB, με παραδείγματα Υποστήριξη Python 3 στο Kodi, καλύτερη βοήθεια στο argparse και πιο φιλικά μηνύματα στο unittest. Αυτές οι λεπτομέρειες μειώνουν την τριβή και σας γλιτώνουν από το να πηδήξετε στον επεξεργαστή για να καταλάβετε τι πάει στραβά..

Η διαδραστική κονσόλα προτείνει διορθώσεις για συνηθισμένα τυπογραφικά λάθη, για παράδειγμα αυτό το κλασικό "print" που τώρα σας οδηγεί στο print. Υπάρχει επίσης πιο έξυπνη αυτόματη συμπλήρωση εισαγωγής, που σας βοηθά να ανακαλύπτετε ενότητες χωρίς να φύγετε από την προτροπή..

Πολύ πρακτικά βοηθητικά προγράμματα εμφανίζονται στο stdlib: μέθοδοι αντιγραφής και μετακίνησης στο pathlib που αποφεύγουν το τράβηγμα shutil για τα βασικά, ένα date.strptime απευθείας χωρίς να χρειάζεται να περάσετε από datetime.strptime().date()και το UUID v7, το οποίο συνδυάζει την τυχαιότητα με τη χρονική διαταξινόμηση. Μικρές συντομεύσεις, μεγάλη επίδραση στα εσωτερικά σενάρια και εργαλεία.

Το argparse προσθέτει προτάσεις όταν κάνετε κάποιο λάθος σε ένα επιλογή, μειώνοντας τον χρόνο εντοπισμού σφαλμάτων CLI· και ναι, οι t-strings αρχίζουν ήδη να τροφοδοτούν ένα μικρό οικοσύστημα βιβλιοθηκών που τις αξιοποιούν για ασφαλή πρότυπα. Αν εργάζεστε με σύνθετες συμβολοσειρές ή δεδομένα χρήστη, θα παρατηρήσετε τη διαφορά..

Παραλληλισμός, λιγότερο μπλοκάρισμα και τέλος οι εκπλήξεις με τις διαδικασίες

Αρκετές αλλαγές στοχεύουν στη μείωση του μπλοκαρίσματος μεταξύ των νημάτων: με τους υποδιερμηνείς στο stdlib και την εξέλιξη της λειτουργίας GIL-free, υπάρχουν περισσότερες επιλογές για την κατανομή του φορτίου χωρίς να προκύπτουν αδιέξοδα. Για υπηρεσίες και βιβλιοθήκες με παράλληλες εργασίες, αυτό μεταφράζεται σε απτές βελτιώσεις στην απόδοση..

Αλλάζει επίσης την προεπιλεγμένη συμπεριφορά κατά τη δημιουργία πολλαπλών διεργασιών: ευνοεί forkserver μπροστά από πιρούνι απλά, κάτι που μειώνει τα ανεπαίσθητα σφάλματα και καθιστά τις αποτυχίες πιο κατανοητές σε σενάρια πολλαπλών επεξεργασιών. Στην πράξη: λιγότερα ζόμπι που είναι δύσκολο να αναπαραχθούν και πιο καθαρά διαγνωστικά.

Χρονοδιάγραμμα και Ωριμότητα Κυκλοφορίας Python 3.14

Η ομάδα Python ανακοίνωσε αρκετές εκδόσεις alpha κατά τη διάρκεια του κύκλου 3.14, συμπεριλαμβανομένης της Alpha 5, από ένα σύνολο επτά κυκλοφοριών pre-beta, που σχεδιάστηκαν για να δοκιμάσουν νέες δυνατότητες, να διορθώσουν σφάλματα και να βελτιώσουν τη διαδικασία κυκλοφορίας. Η φάση beta ξεκίνησε στις 6 Μαΐου 2025, χωρίς να προστεθούν νέες δυνατότητες, με δυνατότητα προσαρμογών μέχρι την κυκλοφορία του υποψήφιου στις 22 Ιουλίου..

Όπως πάντα κατά τη διάρκεια των περιόδων κυκλοφορίας πριν από τη σταθερή έκδοση, η χρήση προεκδόσεων σε περιβάλλοντα παραγωγής δεν συνιστάται. Η επίσημη τεκμηρίωση διατηρεί ένα ενεργό ημερολόγιο (PEP 745), το πρόγραμμα παρακολούθησης ζητημάτων στο GitHub και οδηγίες για τη συνεισφορά μέσω του Python Software Foundation. Εάν εντοπίσετε κάποιο σφάλμα, οι σύνδεσμοι εγγράφων και αναφορών που δημιουργούνται από το Sphinx διευκολύνουν το άνοιγμα και την παρακολούθησή του..

Ένα αριθμητικό κλείσιμο του ματιού: 3.14 και η Χρονιά του Φιδιού

Η σύμπτωση μεταξύ του αριθμού έκδοσης και των ιστορικών προσεγγίσεων του π (3.14) έχει προκαλέσει περισσότερα από ένα αστεία στην κοινότητα, ακριβώς σε ένα σεληνιακό έτος που χαρακτηρίζεται από το Φίδι. Από τον Liu Xin μέχρι τον Zu Chongzhi, η εμμονή με την προσέγγιση του π είναι σχεδόν τόσο παλιά όσο και η βελτιστοποίηση των επαναληπτών..

Πέρα από την ιστορία, αυτή η εκδοχή αποτίει επίσης φόρο τιμής στις συλλογικές προσπάθειες εκατοντάδων εθελοντών και εταιρειών που παρέχουν υπηρεσίες μηχανικού. Το PSF, ως μη κερδοσκοπικός οργανισμός, σας προσκαλεί να συμμετάσχετε, να κάνετε δωρεές και να εξετάσετε το ιστορικό και τις άδειες χρήσης που καλύπτουν την τεκμηρίωση και τα παραδείγματα..

Η τεκμηρίωση συνέχιζε να ενημερώνεται μέχρι πρόσφατα, με σημειώσεις έκδοσης και αυτοματοποιημένες ανακατασκευές χρησιμοποιώντας το Sphinx. Εάν αντιμετωπίσετε μη αναμενόμενη συμπεριφορά, ελέγξτε το αρχείο καταγραφής αλλαγών και την ενότητα "Τι νέο υπάρχει" για να δείτε εάν υπάρχουν πρόσφατες λεπτομέρειες που εξηγούν την αλλαγή..

Συνολικά, η Python 3.14 βελτιώνει την καθημερινή εμπειρία, θέτοντας παράλληλα τις βάσεις για το μέλλον: πραγματικός παραλληλισμός με λιγότερες τριβές, ασφαλή και εκφραστικά πρότυπα, απρόσκοπτη αποσφαλμάτωση και εργαλεία που εξηγούν καλύτερα τα σφάλματα. Αν προέρχεστε από την έκδοση 3.13, θα παρατηρήσετε σταδιακές αλλαγές και νέες δυνατότητες. Αν δεν έχετε κάνει ενημέρωση για μερικές εκδόσεις, οι συνδυασμένες βελτιώσεις θα κάνουν το άλμα να αξίζει τον κόπο..

Kodi 22 Piers
σχετικό άρθρο:
Kodi 22 Piers: Τι νέο υπάρχει, λήψη και τι να περιμένετε από το Alpha