Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι

ΘΕΜΑ: Καινούργιος Global Interpreter Lock (GIL)

Καινούργιος Global Interpreter Lock (GIL) 14 Χρόνια 10 Μήνες πριν #695

  • myle
  • Το Άβαταρ του/της myle
  • Αποσυνδεμένος
  • Admin
  • Δημοσιεύσεις: 467
  • Ληφθείσες Ευχαριστίες 15
** This thread discusses the content article: Καινούργιος Global Interpreter Lock (GIL) **

Από την έκδοση 3.2 της Python θα έχουμε καινούργιο Global Interpreter Lock (GIL). Η καινούργια έκδοση του GIL φέρνει αρκετές βελτιώσεις σε σχέση με την παλιότερη και προβλήματα που αυτή δημιουργούσε. Χαρακτηριστικά, σε πολυπήρυνους επεξεργαστές ένα πρόγραμμα που χρησιμοποιεί νήματα (threads) μπορούσε να τρέχει πιο αργά από ότι σε μονοπήρυνους, εφόσον η ταχύτητα του ήταν συναρτήσει της επεξεργαστικής ισχύος του μηχανήματος (cpu bounded) και δεν αφορούσε λειτουργίες εισόδου/εξόδου (IO bound). Το παραπάνω παράξενο φαινόμενο είχε τις ρίζες του στα πολλά σήματα (signals) που ανταλλάσαν μεταξύ τους τα νήματα ώστε να μπορέσει να καθοριστεί ποιο θα εκτελεστεί και θα πάρει το GIL, ώστε να εκτελείται αποκλειστικά αυτό.

Το πρόβλημα αυτό βελτιώνεται καθοριστικά στην καινούργια έκδοση, όπου μια καινούργια υλοποίηση λαμβάνει χώρα. Όταν υπάρχουν πάνω από ένα νήματα, ένα νήμα που θέλει να πάρει το GIL ενημερώνει αυτό που τρέχει. Εδώ υπάρχουν δύο περιπτώσεις. Είτε το νήμα που τρέχει θα δώσει εθελοντικά το GIL (επειδή λ.χ κάνει κάποιο I/O) είτε θα το δώσει υποχρεωτικά επειδή πέρασε κάποιο χρονικό διάστημα. Στην δεύτερη περίπτωση, τελειώνει την λειτουργία που έκανε και δίνει υποχρεωτικά το GIL. Όταν αφήνεται το GIL, το thread που το κατείχε, περιμένει ενημέρωση ότι λήφθηκε σωστά από το άλλο thread που το αποκτά τώρα.

Μια σχετική παρουσίαση στα αγγλικά του θέματος μπορείτε να βρείτε στο:
www.dabeaz.com/blog/2010/01/presentation-on-new-python-gil.html
«Αν υποθέσουμε ότι αυτό είναι δυνατό, (να μεταδώσουμε τη σοφία παντού) τότε ειλικρινά ο τρόπος ζωής των θεών θα περάσει στους ανθρώπους. Τα πάντα θα είναι γεμάτα...
Τελευταία διόρθωση: 14 Χρόνια 10 Μήνες πριν από sbosx.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.220 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου