{"id":5653,"date":"2024-03-15T12:43:26","date_gmt":"2024-03-15T12:43:26","guid":{"rendered":"https:\/\/byte-bucket.com\/2024\/03\/15\/bye-bye-gil-python-3-12-ermoeglicht-multithreading-ohne-einschraenkungen\/"},"modified":"2024-03-15T12:43:26","modified_gmt":"2024-03-15T12:43:26","slug":"bye-bye-gil-python-3-12-ermoeglicht-multithreading-ohne-einschraenkungen","status":"publish","type":"post","link":"https:\/\/byte-bucket.com\/?p=5653","title":{"rendered":"Bye bye GIL: Python 3.12 erm\u00f6glicht Multithreading ohne Einschr\u00e4nkungen"},"content":{"rendered":"<p>Hey Leute, wisst ihr, was in der Welt der Programmiersprachen gerade los ist? Es gibt eine ziemlich coole \u00c4nderung in Python, die uns allen das Leben ein bisschen einfacher machen k\u00f6nnte. Es geht um den Global Interpreter Lock (GIL) &#8211; diese kleine Einschr\u00e4nkung, die Multithreading-Anwendungen bisher beeintr\u00e4chtigt hat.<\/p>\n<p>Aber was ist eigentlich dieser GIL? Nun, der GIL ist so etwas wie der &#8222;Thread-Polizist&#8220; in Python. Er sorgt daf\u00fcr, dass immer nur ein Thread gleichzeitig aktiv ist und verhindert so sogenannte &#8222;Race Conditions&#8220;. Klingt kompliziert, oder? Das bedeutet einfach nur, dass es keine Konflikte gibt, wenn mehrere Threads gleichzeitig auf die gleichen Daten zugreifen und diese ver\u00e4ndern wollen. Der GIL stellt sicher, dass alles ordentlich nacheinander abl\u00e4uft und keine seltsamen Ergebnisse auftauchen.<\/p>\n<p>Aber hier kommt das Problem: Der GIL verhindert auch, dass Python das volle Potenzial von Mehrkernprozessoren oder Multiprozessorsystemen aussch\u00f6pfen kann. Das ist nat\u00fcrlich doof, denn wir alle haben gerne so viel Power wie m\u00f6glich, oder? Deshalb gab es schon l\u00e4nger Diskussionen dar\u00fcber, den GIL abzuschaffen und Python &#8222;multithreading-freundlicher&#8220; zu machen.<\/p>\n<p>Und jetzt kommt die gute Nachricht: In Python 3.12 wurde eine \u00c4nderung eingef\u00fchrt, die den GIL deaktivierbar macht. Ja, ihr habt richtig geh\u00f6rt! Ihr k\u00f6nnt den GIL einfach ausschalten und eure Multithreading-Anwendungen k\u00f6nnen das volle Potenzial eurer Hardware nutzen. Das klingt doch super, oder?<\/p>\n<p>Aber wie funktioniert das Ganze? Nun, es gibt jetzt die M\u00f6glichkeit, sogenannte Sub-Interpreters zu erstellen, die unabh\u00e4ngige Locks besitzen. Das ist sozusagen ein erster Schritt in die richtige Richtung. Aber der eigentliche Durchbruch kam mit dem Python Enhancement Proposal (PEP) 703, das im Januar 2023 von Sam Gross von Meta s Facebook AI Research eingereicht wurde. Der Vorschlag hie\u00df &#8222;Making the Global Interpreter Lock Optional in CPython&#8220; und hat in der Python-Community f\u00fcr ziemlich viel Aufsehen gesorgt.<\/p>\n<p>Nachdem das Core-Developer-Team eine Umfrage durchgef\u00fchrt hat und sich eine klare Mehrheit f\u00fcr eine verbesserte Variante f\u00fcr Multithreading ausgesprochen hat, wurde ein Pull Request f\u00fcr das CPython-Projekt akzeptiert. Das bedeutet, dass ihr jetzt Flags verwenden k\u00f6nnt, um den GIL zur Laufzeit zu deaktivieren. Mit den Flags PYTHON_GIL oder -X gil0 k\u00f6nnt ihr den GIL einfach ausschalten und loslegen.<\/p>\n<p>Nat\u00fcrlich gibt es ein paar Dinge zu beachten und Herausforderungen w\u00e4hrend der \u00dcbergangsphase, aber hey, das ist doch ein kleiner Preis, um das volle Potenzial eurer Hardware auszusch\u00f6pfen, oder? Diese \u00c4nderung wurde erfolgreich in den Hauptzweig des CPython-Projekts integriert und wird voraussichtlich mit Python 3.13 verf\u00fcgbar sein. Das hei\u00dft, dass ihr bald in den Genuss einer verbesserten Unterst\u00fctzung f\u00fcr Multithreading-Anwendungen kommen k\u00f6nnt.<\/p>\n<p>Also, liebe Entwickler, schnappt euch eure Mehrkernprozessoren und Multiprozessorsysteme und lasst eure Python-Programme so richtig loslegen! Keine Race Conditions mehr, daf\u00fcr aber jede Menge Power. Viel Spa\u00df beim Programmieren!<\/p>\n<p>Schlagw\u00f6rter: Python + GIL + PEP<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hey Leute, wisst ihr, was in der Welt der Programmiersprachen gerade los ist? Es gibt eine ziemlich coole \u00c4nderung in Python, die uns allen das Leben ein bisschen einfacher machen k\u00f6nnte. Es geht um den Global Interpreter Lock (GIL) &#8211; diese kleine Einschr\u00e4nkung, die Multithreading-Anwendungen bisher beeintr\u00e4chtigt hat. Aber was&#46;&#46;&#46;<\/p>\n","protected":false},"author":4,"featured_media":5652,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-5653","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/byte-bucket.com\/index.php?rest_route=\/wp\/v2\/posts\/5653","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/byte-bucket.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/byte-bucket.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/byte-bucket.com\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/byte-bucket.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5653"}],"version-history":[{"count":0,"href":"https:\/\/byte-bucket.com\/index.php?rest_route=\/wp\/v2\/posts\/5653\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/byte-bucket.com\/index.php?rest_route=\/wp\/v2\/media\/5652"}],"wp:attachment":[{"href":"https:\/\/byte-bucket.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5653"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/byte-bucket.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5653"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/byte-bucket.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5653"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}