{"id":4508,"date":"2023-08-01T11:35:37","date_gmt":"2023-08-01T11:35:37","guid":{"rendered":"https:\/\/picockpit.com\/raspberry-pi\/?p=4508"},"modified":"2023-08-01T11:35:39","modified_gmt":"2023-08-01T11:35:39","slug":"python-dispatch-making-the-gil-optional","status":"publish","type":"post","link":"https:\/\/picockpit.com\/raspberry-pi\/python-dispatch-making-the-gil-optional\/","title":{"rendered":"Python Dispatch: Making the GIL Optional"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/08\/Python-Dispatch-1024x576.png\" alt=\"\" class=\"wp-image-4511\" srcset=\"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/08\/Python-Dispatch-1024x576.png 1024w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/08\/Python-Dispatch-300x169.png 300w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/08\/Python-Dispatch-768x432.png 768w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/08\/Python-Dispatch-18x10.png 18w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/08\/Python-Dispatch.png 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>The Steering Council have made<a href=\"https:\/\/discuss.python.org\/t\/a-steering-council-notice-about-pep-703-making-the-global-interpreter-lock-optional-in-cpython\/30474\"> a huge announcement regarding the future of Python<\/a>. Namely, they have decided to make the Global Interpreter Lock (GIL) optional in CPython and eventually remove the GIL altogether.<\/p>\n\n\n\n<p>This is a huge decision that will fundamentally alter Python.<\/p>\n\n\n\n<p>Therefore, in this post, I&#8217;ll go through what the GIL is, its advantages and disadvantages, and what the future holds.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The GIL<\/h2>\n\n\n\n<p>Let me go through the Global Interpreter Lock one word at a time in reverse order, starting with <em>lock<\/em> and then <em>interpreter<\/em> and finally, <em>global<\/em>.<\/p>\n\n\n\n<p>A lock is a mechanism that allows only one thread to run at a time. So when a thread gets ahold of the lock, it gains exclusive access to the Python interpreter.<\/p>\n\n\n\n<p>An <a href=\"https:\/\/picockpit.com\/raspberry-pi\/whats-the-difference-between-micropython-circuitpython-cpython-anyway\/\">interpreter is the program for executing Python code<\/a>.<\/p>\n\n\n\n<p>The word &#8220;global&#8221; here refers to the scope of the interpreter lock. Because the interpreter lock is global, it guarantees that only one thread executes Python code at a time within a single process.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/08\/image-1.png\" alt=\"\" class=\"wp-image-4520\" width=\"451\" height=\"345\" srcset=\"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/08\/image-1.png 645w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/08\/image-1-300x229.png 300w, https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/08\/image-1-16x12.png 16w\" sizes=\"auto, (max-width: 451px) 100vw, 451px\" \/><figcaption class=\"wp-element-caption\">Credit: <a href=\"https:\/\/statusneo.com\/concurrency-in-python-threading-processes-and-asyncio\/\">StatusNeo<\/a>.<\/figcaption><\/figure>\n<\/div>\n\n\n<p>So the GIL is a mechanism that prevents multiple threads from running at the same time through the interpreter. But why would you want that?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Advantages<\/h2>\n\n\n\n<p>The primary advantage of the GIL is that it makes things easier. Managing memory is easier, managing threads is thus easier, and creating modules is thus easier.<\/p>\n\n\n\n<p>Without the GIL, you can quickly run into problems with multithreading. If you don&#8217;t put the proper local locks into place for each thread, you might end up crashing Python or corrupting some other memory in the computer.<\/p>\n\n\n\n<p>And if you&#8217;re not multithreading, then the GIL is super helpful, because it keeps everything running smoothly.<\/p>\n\n\n\n<p>So the GIL keeps things simple and safe.<\/p>\n\n\n\n<p>Then why wouldn&#8217;t you want that?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Disadvantages<\/h2>\n\n\n\n<p>The trade-off here is ease for speed.<\/p>\n\n\n\n<p>By preventing multithreading, the GIL makes CPython slower and less performant than some other languages (like C++, Go, and Rust).<\/p>\n\n\n\n<p>Especially with the explosion of AI in the past few months, the GIL is becoming more and more of a problem in executing programs quickly and efficiently.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" hcb-fetch-image-from=\"https:\/\/www.youtube.com\/watch?v=9OOJcTp8dqE\" title=\"Keynote: Multithreaded Python without the GIL - presented by Sam Gross\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/9OOJcTp8dqE?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">The Future of the GIL<\/h2>\n\n\n\n<p>So now that the Steering Council have announced that they have accepted the <a href=\"https:\/\/peps.python.org\/pep-0703\/#alternatives\">Python Enhancement Proposal (PEP) 703, written by Sam Gross<\/a>, we are entering uncharted waters.<\/p>\n\n\n\n<p>Countless extensions have been written with the GIL in mind. All of the standards set with CPython depend on the GIL. Everyone builds in CPython with the GIL at the center of their programs (either intentionally or not).<\/p>\n\n\n\n<p>Thus, the Steering Council are initially making the GIL optional, but in the long-term, they plan on phasing out the GIL completely. <\/p>\n\n\n\n<p>As they put it in the post, &#8220;We do not want to create a permanent split between with-GIL and no-GIL builds (and extension modules).&#8221;<\/p>\n\n\n\n<p>This will absolutely transform Python and, perhaps most interestingly, in ways that no one knows yet. Brett Cannon, <a href=\"https:\/\/discuss.python.org\/t\/poll-feedback-to-the-sc-on-making-cpython-free-threaded-and-pep-703\/28540\">in a poll to the core developer team<\/a>, wrote that &#8220;making Python free-threaded&#8230; has a lot of unknowns. We don&#8217;t know how much code implicitly relies on the GIL, or thread-unsafe in subtle ways that are masked by the GIL.&#8221;<\/p>\n\n\n\n<p>The GIL is disappearing &#8211; what will it take with it?<\/p>\n\n\n\n<p>And, more importantly, what will the new CPython look like?<\/p>\n<div class=\"shariff shariff-align-center shariff-widget-align-left shariff-buttonstretch\"><ul class=\"shariff-buttons theme-white orientation-horizontal buttonsize-medium\"><li class=\"shariff-button twitter shariff-nocustomcolor\" style=\"background-color:#595959\"><a href=\"https:\/\/twitter.com\/share?url=https%3A%2F%2Fpicockpit.com%2Fraspberry-pi%2Fpython-dispatch-making-the-gil-optional%2F&text=Python%20Dispatch%3A%20Making%20the%20GIL%20Optional\" title=\"Share on X\" aria-label=\"Share on X\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#000; color:#000\" target=\"_blank\"><span class=\"shariff-icon\" style=\"fill:#000\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\"><path fill=\"#000\" d=\"M14.258 10.152L23.176 0h-2.113l-7.747 8.813L7.133 0H0l9.352 13.328L0 23.973h2.113l8.176-9.309 6.531 9.309h7.133zm-2.895 3.293l-.949-1.328L2.875 1.56h3.246l6.086 8.523.945 1.328 7.91 11.078h-3.246zm0 0\"\/><\/svg><\/span><span class=\"shariff-text\" style=\"color:#000\">share<\/span>&nbsp;<\/a><\/li><li class=\"shariff-button facebook shariff-nocustomcolor\" style=\"background-color:#4273c8\"><a href=\"https:\/\/www.facebook.com\/sharer\/sharer.php?u=https%3A%2F%2Fpicockpit.com%2Fraspberry-pi%2Fpython-dispatch-making-the-gil-optional%2F\" title=\"Share on Facebook\" aria-label=\"Share on Facebook\" role=\"button\" rel=\"nofollow\" class=\"shariff-link\" style=\"; background-color:#3b5998; color:#3b5998\" target=\"_blank\"><span class=\"shariff-icon\" style=\"fill:#3b5998\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 18 32\"><path fill=\"#3b5998\" d=\"M17.1 0.2v4.7h-2.8q-1.5 0-2.1 0.6t-0.5 1.9v3.4h5.2l-0.7 5.3h-4.5v13.6h-5.5v-13.6h-4.5v-5.3h4.5v-3.9q0-3.3 1.9-5.2t5-1.8q2.6 0 4.1 0.2z\"\/><\/svg><\/span><span class=\"shariff-text\" style=\"color:#3b5998\">share<\/span>&nbsp;<\/a><\/li><li class=\"shariff-button telegram shariff-nocustomcolor\" style=\"background-color:#4084A6\"><a href=\"https:\/\/telegram.me\/share\/url?url=https%3A%2F%2Fpicockpit.com%2Fraspberry-pi%2Fpython-dispatch-making-the-gil-optional%2F&text=Python%20Dispatch%3A%20Making%20the%20GIL%20Optional\" title=\"Share on Telegram\" aria-label=\"Share on Telegram\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#0088cc; color:#0088cc\" target=\"_blank\"><span class=\"shariff-icon\" style=\"fill:#0088cc\"><svg width=\"32px\" height=\"20px\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 32 32\"><path fill=\"#0088cc\" d=\"M30.8 6.5l-4.5 21.4c-.3 1.5-1.2 1.9-2.5 1.2L16.9 24l-3.3 3.2c-.4.4-.7.7-1.4.7l.5-7L25.5 9.2c.6-.5-.1-.8-.9-.3l-15.8 10L2 16.7c-1.5-.5-1.5-1.5.3-2.2L28.9 4.3c1.3-.5 2.3.3 1.9 2.2z\"\/><\/svg><\/span><span class=\"shariff-text\" style=\"color:#0088cc\">share<\/span>&nbsp;<\/a><\/li><li class=\"shariff-button reddit shariff-nocustomcolor\" style=\"background-color:#ff5700\"><a href=\"https:\/\/www.reddit.com\/submit?url=https%3A%2F%2Fpicockpit.com%2Fraspberry-pi%2Fpython-dispatch-making-the-gil-optional%2F\" title=\"Share on Reddit\" aria-label=\"Share on Reddit\" role=\"button\" rel=\"noopener nofollow\" class=\"shariff-link\" style=\"; background-color:#ff4500; color:#ff4500\" target=\"_blank\"><span class=\"shariff-icon\" style=\"fill:#ff4500\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\"><path fill=\"#ff4500\" d=\"M440.3 203.5c-15 0-28.2 6.2-37.9 15.9-35.7-24.7-83.8-40.6-137.1-42.3L293 52.3l88.2 19.8c0 21.6 17.6 39.2 39.2 39.2 22 0 39.7-18.1 39.7-39.7s-17.6-39.7-39.7-39.7c-15.4 0-28.7 9.3-35.3 22l-97.4-21.6c-4.9-1.3-9.7 2.2-11 7.1L246.3 177c-52.9 2.2-100.5 18.1-136.3 42.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6 0-73.8 74.6-22.9 100.1-1.8 7.9-2.6 16.3-2.6 24.7 0 83.8 94.4 151.7 210.3 151.7 116.4 0 210.8-67.9 210.8-151.7 0-8.4-.9-17.2-3.1-25.1 49.9-25.6 31.5-99.7-23.8-99.7zM129.4 308.9c0-22 17.6-39.7 39.7-39.7 21.6 0 39.2 17.6 39.2 39.7 0 21.6-17.6 39.2-39.2 39.2-22 .1-39.7-17.6-39.7-39.2zm214.3 93.5c-36.4 36.4-139.1 36.4-175.5 0-4-3.5-4-9.7 0-13.7 3.5-3.5 9.7-3.5 13.2 0 27.8 28.5 120 29 149 0 3.5-3.5 9.7-3.5 13.2 0 4.1 4 4.1 10.2.1 13.7zm-.8-54.2c-21.6 0-39.2-17.6-39.2-39.2 0-22 17.6-39.7 39.2-39.7 22 0 39.7 17.6 39.7 39.7-.1 21.5-17.7 39.2-39.7 39.2z\"\/><\/svg><\/span><span class=\"shariff-text\" style=\"color:#ff4500\">share<\/span>&nbsp;<\/a><\/li><\/ul><\/div>","protected":false},"excerpt":{"rendered":"<p>The Steering Council have made a huge announcement regarding the future of Python. Namely, they have decided to make the Global Interpreter Lock (GIL) optional in CPython and eventually remove the GIL altogether. This is a huge decision that will fundamentally alter Python. Therefore, in this post, I&#8217;ll go through what the GIL is, its&hellip;<\/p>\n","protected":false},"author":2,"featured_media":4511,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1193,1721],"tags":[1726,1727,477,1731,1732,996,1729,1722,14,1723,1728,1725,476,1730,1724],"class_list":["post-4508","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python","category-python-dispatch","tag-async","tag-asynchronous-programming","tag-circuitpython","tag-concurrency","tag-concurrent-programming","tag-cpython","tag-gil","tag-global-interpreter-lock","tag-micropython","tag-multithreading","tag-parallel-programming","tag-parallelism","tag-python","tag-python-dispatch","tag-single-threading"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Python Dispatch: Making the GIL Optional | PiCockpit<\/title>\n<meta name=\"description\" content=\"The Steering Council recently made a huge announcement regarding Python.They have decided to make the Global Interpreter Lock optional.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/picockpit.com\/raspberry-pi\/python-dispatch-making-the-gil-optional\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python Dispatch: Making the GIL Optional | PiCockpit\" \/>\n<meta property=\"og:description\" content=\"The Steering Council recently made a huge announcement regarding Python.They have decided to make the Global Interpreter Lock optional.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/picockpit.com\/raspberry-pi\/python-dispatch-making-the-gil-optional\/\" \/>\n<meta property=\"og:site_name\" content=\"PiCockpit\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/pi3gshop\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-01T11:35:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-01T11:35:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/08\/Python-Dispatch.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"raspi berry\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@pi3g\" \/>\n<meta name=\"twitter:site\" content=\"@pi3g\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"raspi berry\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/fr\\\/python-dispatch-faire-du-gil-optionnel\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/fr\\\/python-dispatch-faire-du-gil-optionnel\\\/\"},\"author\":{\"name\":\"raspi berry\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#\\\/schema\\\/person\\\/7af3a7a8c999bc722029ef9ca9d78eee\"},\"headline\":\"Python Dispatch: Making the GIL Optional\",\"datePublished\":\"2023-08-01T11:35:37+00:00\",\"dateModified\":\"2023-08-01T11:35:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/fr\\\/python-dispatch-faire-du-gil-optionnel\\\/\"},\"wordCount\":557,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/fr\\\/python-dispatch-faire-du-gil-optionnel\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/Python-Dispatch.png\",\"keywords\":[\"async\",\"asynchronous programming\",\"circuitpython\",\"concurrency\",\"concurrent programming\",\"cpython\",\"GIL\",\"global interpreter lock\",\"microPython\",\"multithreading\",\"parallel programming\",\"parallelism\",\"python\",\"Python Dispatch\",\"single threading\"],\"articleSection\":[\"Python\",\"Python Dispatch\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/fr\\\/python-dispatch-faire-du-gil-optionnel\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/fr\\\/python-dispatch-faire-du-gil-optionnel\\\/\",\"url\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/fr\\\/python-dispatch-faire-du-gil-optionnel\\\/\",\"name\":\"Python Dispatch: Making the GIL Optional | PiCockpit\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/fr\\\/python-dispatch-faire-du-gil-optionnel\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/fr\\\/python-dispatch-faire-du-gil-optionnel\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/Python-Dispatch.png\",\"datePublished\":\"2023-08-01T11:35:37+00:00\",\"dateModified\":\"2023-08-01T11:35:39+00:00\",\"description\":\"The Steering Council recently made a huge announcement regarding Python.They have decided to make the Global Interpreter Lock optional.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/fr\\\/python-dispatch-faire-du-gil-optionnel\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/fr\\\/python-dispatch-faire-du-gil-optionnel\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/fr\\\/python-dispatch-faire-du-gil-optionnel\\\/#primaryimage\",\"url\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/Python-Dispatch.png\",\"contentUrl\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/Python-Dispatch.png\",\"width\":1200,\"height\":675},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/fr\\\/python-dispatch-faire-du-gil-optionnel\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python\",\"item\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/category\\\/python\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Python Dispatch: Making the GIL Optional\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#website\",\"url\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/\",\"name\":\"PiCockpit\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#organization\",\"name\":\"PiCockpit.com\",\"url\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/Screenshot-from-2023-07-24-15-01-24.png\",\"contentUrl\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/Screenshot-from-2023-07-24-15-01-24.png\",\"width\":1165,\"height\":283,\"caption\":\"PiCockpit.com\"},\"image\":{\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/pi3gshop\",\"https:\\\/\\\/x.com\\\/pi3g\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/#\\\/schema\\\/person\\\/7af3a7a8c999bc722029ef9ca9d78eee\",\"name\":\"raspi berry\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c10c423ceeff34163dd54a5472d6da17d71c0e360e0cf8cdb8847006372f216b?s=96&d=blank&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c10c423ceeff34163dd54a5472d6da17d71c0e360e0cf8cdb8847006372f216b?s=96&d=blank&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c10c423ceeff34163dd54a5472d6da17d71c0e360e0cf8cdb8847006372f216b?s=96&d=blank&r=g\",\"caption\":\"raspi berry\"},\"description\":\"I'm here to help you with all your Raspberry Pi related questions &amp; love to share about new project ideas for the Raspberry Pi, and give quick tips. Of course I'll also help you with PiCockpit and how to make your Raspberry Pi even easier to use with this raspberry pi monitoring solution :-)\",\"sameAs\":[\"https:\\\/\\\/picockpit.com\"],\"url\":\"https:\\\/\\\/picockpit.com\\\/raspberry-pi\\\/author\\\/raspi-berry\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Python Dispatch: Making the GIL Optional | PiCockpit","description":"The Steering Council recently made a huge announcement regarding Python.They have decided to make the Global Interpreter Lock optional.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/picockpit.com\/raspberry-pi\/python-dispatch-making-the-gil-optional\/","og_locale":"en_US","og_type":"article","og_title":"Python Dispatch: Making the GIL Optional | PiCockpit","og_description":"The Steering Council recently made a huge announcement regarding Python.They have decided to make the Global Interpreter Lock optional.","og_url":"https:\/\/picockpit.com\/raspberry-pi\/python-dispatch-making-the-gil-optional\/","og_site_name":"PiCockpit","article_publisher":"https:\/\/www.facebook.com\/pi3gshop","article_published_time":"2023-08-01T11:35:37+00:00","article_modified_time":"2023-08-01T11:35:39+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/08\/Python-Dispatch.png","type":"image\/png"}],"author":"raspi berry","twitter_card":"summary_large_image","twitter_creator":"@pi3g","twitter_site":"@pi3g","twitter_misc":{"Written by":"raspi berry","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/picockpit.com\/raspberry-pi\/fr\/python-dispatch-faire-du-gil-optionnel\/#article","isPartOf":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/fr\/python-dispatch-faire-du-gil-optionnel\/"},"author":{"name":"raspi berry","@id":"https:\/\/picockpit.com\/raspberry-pi\/#\/schema\/person\/7af3a7a8c999bc722029ef9ca9d78eee"},"headline":"Python Dispatch: Making the GIL Optional","datePublished":"2023-08-01T11:35:37+00:00","dateModified":"2023-08-01T11:35:39+00:00","mainEntityOfPage":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/fr\/python-dispatch-faire-du-gil-optionnel\/"},"wordCount":557,"commentCount":0,"publisher":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/#organization"},"image":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/fr\/python-dispatch-faire-du-gil-optionnel\/#primaryimage"},"thumbnailUrl":"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/08\/Python-Dispatch.png","keywords":["async","asynchronous programming","circuitpython","concurrency","concurrent programming","cpython","GIL","global interpreter lock","microPython","multithreading","parallel programming","parallelism","python","Python Dispatch","single threading"],"articleSection":["Python","Python Dispatch"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/picockpit.com\/raspberry-pi\/fr\/python-dispatch-faire-du-gil-optionnel\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/picockpit.com\/raspberry-pi\/fr\/python-dispatch-faire-du-gil-optionnel\/","url":"https:\/\/picockpit.com\/raspberry-pi\/fr\/python-dispatch-faire-du-gil-optionnel\/","name":"Python Dispatch: Making the GIL Optional | PiCockpit","isPartOf":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/#website"},"primaryImageOfPage":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/fr\/python-dispatch-faire-du-gil-optionnel\/#primaryimage"},"image":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/fr\/python-dispatch-faire-du-gil-optionnel\/#primaryimage"},"thumbnailUrl":"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/08\/Python-Dispatch.png","datePublished":"2023-08-01T11:35:37+00:00","dateModified":"2023-08-01T11:35:39+00:00","description":"The Steering Council recently made a huge announcement regarding Python.They have decided to make the Global Interpreter Lock optional.","breadcrumb":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/fr\/python-dispatch-faire-du-gil-optionnel\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/picockpit.com\/raspberry-pi\/fr\/python-dispatch-faire-du-gil-optionnel\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/picockpit.com\/raspberry-pi\/fr\/python-dispatch-faire-du-gil-optionnel\/#primaryimage","url":"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/08\/Python-Dispatch.png","contentUrl":"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/08\/Python-Dispatch.png","width":1200,"height":675},{"@type":"BreadcrumbList","@id":"https:\/\/picockpit.com\/raspberry-pi\/fr\/python-dispatch-faire-du-gil-optionnel\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/picockpit.com\/raspberry-pi\/"},{"@type":"ListItem","position":2,"name":"Python","item":"https:\/\/picockpit.com\/raspberry-pi\/category\/python\/"},{"@type":"ListItem","position":3,"name":"Python Dispatch: Making the GIL Optional"}]},{"@type":"WebSite","@id":"https:\/\/picockpit.com\/raspberry-pi\/#website","url":"https:\/\/picockpit.com\/raspberry-pi\/","name":"PiCockpit","description":"","publisher":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/picockpit.com\/raspberry-pi\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/picockpit.com\/raspberry-pi\/#organization","name":"PiCockpit.com","url":"https:\/\/picockpit.com\/raspberry-pi\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/picockpit.com\/raspberry-pi\/#\/schema\/logo\/image\/","url":"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Screenshot-from-2023-07-24-15-01-24.png","contentUrl":"https:\/\/picockpit.com\/raspberry-pi\/wp-content\/uploads\/2023\/07\/Screenshot-from-2023-07-24-15-01-24.png","width":1165,"height":283,"caption":"PiCockpit.com"},"image":{"@id":"https:\/\/picockpit.com\/raspberry-pi\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/pi3gshop","https:\/\/x.com\/pi3g"]},{"@type":"Person","@id":"https:\/\/picockpit.com\/raspberry-pi\/#\/schema\/person\/7af3a7a8c999bc722029ef9ca9d78eee","name":"raspi berry","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/c10c423ceeff34163dd54a5472d6da17d71c0e360e0cf8cdb8847006372f216b?s=96&d=blank&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c10c423ceeff34163dd54a5472d6da17d71c0e360e0cf8cdb8847006372f216b?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c10c423ceeff34163dd54a5472d6da17d71c0e360e0cf8cdb8847006372f216b?s=96&d=blank&r=g","caption":"raspi berry"},"description":"I'm here to help you with all your Raspberry Pi related questions &amp; love to share about new project ideas for the Raspberry Pi, and give quick tips. Of course I'll also help you with PiCockpit and how to make your Raspberry Pi even easier to use with this raspberry pi monitoring solution :-)","sameAs":["https:\/\/picockpit.com"],"url":"https:\/\/picockpit.com\/raspberry-pi\/author\/raspi-berry\/"}]}},"_links":{"self":[{"href":"https:\/\/picockpit.com\/raspberry-pi\/wp-json\/wp\/v2\/posts\/4508","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/picockpit.com\/raspberry-pi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/picockpit.com\/raspberry-pi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/picockpit.com\/raspberry-pi\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/picockpit.com\/raspberry-pi\/wp-json\/wp\/v2\/comments?post=4508"}],"version-history":[{"count":11,"href":"https:\/\/picockpit.com\/raspberry-pi\/wp-json\/wp\/v2\/posts\/4508\/revisions"}],"predecessor-version":[{"id":4521,"href":"https:\/\/picockpit.com\/raspberry-pi\/wp-json\/wp\/v2\/posts\/4508\/revisions\/4521"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/picockpit.com\/raspberry-pi\/wp-json\/wp\/v2\/media\/4511"}],"wp:attachment":[{"href":"https:\/\/picockpit.com\/raspberry-pi\/wp-json\/wp\/v2\/media?parent=4508"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/picockpit.com\/raspberry-pi\/wp-json\/wp\/v2\/categories?post=4508"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/picockpit.com\/raspberry-pi\/wp-json\/wp\/v2\/tags?post=4508"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}