René's URL Explorer Experiment


Title: Bypassing the GIL for Parallel Processing in Python – Real Python

Open Graph Title: Bypassing the GIL for Parallel Processing in Python – Real Python

Description: In this tutorial, you'll take a deep dive into parallel processing in Python. You'll learn about a few traditional and several novel ways of sidestepping the global interpreter lock (GIL) to achieve genuine shared-memory parallelism of your CPU-bound tasks.

Open Graph Description: In this tutorial, you'll take a deep dive into parallel processing in Python. You'll learn about a few traditional and several novel ways of sidestepping the global interpreter lock (GIL) to achieve genuine shared-memory parallelism of your CPU-bound tasks.

Mail addresses
?subject=Python article for you&body=Bypassing the GIL for Parallel Processing in Python on Real Python https://realpython.com/python-parallel-processing/

Opengraph URL: https://realpython.com/python-parallel-processing/

X: @realpython

direct link

Domain: realpython.com


Hey, it has json ld scripts:
{
  "@context": "http://schema.org",
  "@type": "Article",
  "headline": "Bypassing the GIL for Parallel Processing in Python",
  "image": {
    "@type": "ImageObject",
    "url": "https://files.realpython.com/media/Parallel-Processing-in-Python_Watermarked.3bf6bdc46d5a.jpg",
    "width": 1920,
    "height": 1080
  },
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://realpython.com/python-parallel-processing/",
    "lastReviewed": "2023-09-06",
    "author": {
      "@type": "Person",
      "name": "Bartosz Zaczy\u0144ski",
      "image": "https://realpython.com/cdn-cgi/image/width=1694,height=1694,fit=crop,gravity=auto,format=auto/https://files.realpython.com/media/coders_lab_2109368.259b1599fbee.jpg",
      "url": "https://realpython.com/team/bzaczynski/",
      "affiliation": {
        "@type": "Organization",
        "@id": "https://realpython.com/#organization",
        "name": "Real Python",
        "url": "https://realpython.com",
        "logo": "https://realpython.com/static/real-python-logo-square-512.157ae6bf64ed.png"
      }
    },
    "reviewedBy": [
      {
        "@type": "Person",
        "name": "Aldren Santos",
        "image": "https://realpython.com/cdn-cgi/image/width=500,height=500,fit=crop,gravity=auto,format=auto/https://files.realpython.com/media/Aldren_Santos_Real_Python.6b0861d8b841.png",
        "url": "https://realpython.com/team/asantos/",
        "affiliation": {
          "@type": "Organization",
          "@id": "https://realpython.com/#organization",
          "name": "Real Python",
          "url": "https://realpython.com",
          "logo": "https://realpython.com/static/real-python-logo-square-512.157ae6bf64ed.png"
        }
      },
      {
        "@type": "Person",
        "name": "Geir Arne Hjelle",
        "image": "https://realpython.com/cdn-cgi/image/width=800,height=800,fit=crop,gravity=auto,format=auto/https://files.realpython.com/media/gahjelle.470149ee709e.jpg",
        "url": "https://realpython.com/team/gahjelle/",
        "affiliation": {
          "@type": "Organization",
          "@id": "https://realpython.com/#organization",
          "name": "Real Python",
          "url": "https://realpython.com",
          "logo": "https://realpython.com/static/real-python-logo-square-512.157ae6bf64ed.png"
        }
      },
      {
        "@type": "Person",
        "name": "Kate Finegan",
        "image": "https://realpython.com/cdn-cgi/image/width=400,height=400,fit=crop,gravity=auto,format=auto/https://files.realpython.com/media/VZxEtUor_400x400.7169c68e3950.jpg",
        "url": "https://realpython.com/team/kfinegan/",
        "affiliation": {
          "@type": "Organization",
          "@id": "https://realpython.com/#organization",
          "name": "Real Python",
          "url": "https://realpython.com",
          "logo": "https://realpython.com/static/real-python-logo-square-512.157ae6bf64ed.png"
        }
      }
    ]
  },
  "datePublished": "2023-09-13T14:00:00+00:00",
  "dateModified": "2023-09-06T17:02:56.370111+00:00",
  "publisher": {
    "@type": "Organization",
    "@id": "https://realpython.com/#organization",
    "name": "Real Python",
    "url": "https://realpython.com",
    "logo": {
      "@type": "ImageObject",
      "url": "https://realpython.com/static/real-python-logo-square-512.157ae6bf64ed.png",
      "width": 512,
      "height": 512
    },
    "description": "Real Python is a leading provider of online Python education and one of the largest language-specific online communities for software developers. It publishes high-quality learning resources, such as tutorials, books, and courses to an audience of millions of developers, data scientists, and machine learning engineers each month.",
    "slogan": "Become a Python Expert",
    "email": "info@realpython.com",
    "sameAs": [
      "https://github.com/realpython",
      "https://www.youtube.com/realpython",
      "https://twitter.com/realpython",
      "https://x.com/realpython",
      "https://www.linkedin.com/company/realpython-com/",
      "https://www.facebook.com/learnrealpython",
      "https://www.instagram.com/realpython",
      "https://www.tiktok.com/@realpython.com"
    ]
  },
  "author": {
    "@type": "Person",
    "name": "Bartosz Zaczy\u0144ski",
    "image": "https://realpython.com/cdn-cgi/image/width=1694,height=1694,fit=crop,gravity=auto,format=auto/https://files.realpython.com/media/coders_lab_2109368.259b1599fbee.jpg",
    "url": "https://realpython.com/team/bzaczynski/",
    "affiliation": {
      "@type": "Organization",
      "@id": "https://realpython.com/#organization",
      "name": "Real Python",
      "url": "https://realpython.com",
      "logo": "https://realpython.com/static/real-python-logo-square-512.157ae6bf64ed.png"
    }
  },
  "description": "In this tutorial, you'll take a deep dive into parallel processing in Python. You'll learn about a few traditional and several novel ways of sidestepping the global interpreter lock (GIL) to achieve genuine shared-memory parallelism of your CPU-bound tasks."
}

authorReal Python
twitter:cardsummary_large_image
twitter:imagehttps://files.realpython.com/media/Parallel-Processing-in-Python_Watermarked.3bf6bdc46d5a.jpg
og:imagehttps://files.realpython.com/media/Parallel-Processing-in-Python_Watermarked.3bf6bdc46d5a.jpg
twitter:creator@realpython
og:typearticle

Links:

https://realpython.com/
Start Herehttps://realpython.com/start-here/
Learn Python https://realpython.com/python-parallel-processing/
Python Tutorials →In-depth articles and video courseshttps://realpython.com/search?kind=article&kind=course&order=newest
Learning Paths →Guided study plans for accelerated learninghttps://realpython.com/learning-paths/
Quizzes & Exercises →Check your learning progresshttps://realpython.com/quizzes/
Browse Topics →Focus on a specific area or skill levelhttps://realpython.com/tutorials/all/
Community Chat →Learn with other Pythonistashttps://realpython.com/community/
Office Hours →Live Q&A calls with Python expertshttps://realpython.com/office-hours/
Podcast →Hear what’s new in the world of Pythonhttps://realpython.com/podcasts/rpp/
Books →Round out your knowledge and learn offlinehttps://realpython.com/products/books/
Reference →Concise definitions for common Python termshttps://realpython.com/ref/
Code Mentor →BetaPersonalized code assistance & learning toolshttps://realpython.com/mentor/
Unlock All Content →https://realpython.com/account/join/
More https://realpython.com/python-parallel-processing/
Learner Storieshttps://realpython.com/learner-stories/
Python Newsletterhttps://realpython.com/newsletter/
Python Job Boardhttps://www.pythonjobshq.com
Meet the Teamhttps://realpython.com/team/
Become a Tutorial Writerhttps://realpython.com/write-for-us/
Become a Video Instructorhttps://realpython.com/become-an-instructor/
Searchhttps://realpython.com/search
https://realpython.com/search
Joinhttps://realpython.com/account/join/
Sign‑Inhttps://realpython.com/account/login/?next=%2Fpython-parallel-processing%2F
Browse Topicshttps://realpython.com/tutorials/all/
Guided Learning Pathshttps://realpython.com/learning-paths/
Basicshttps://realpython.com/search?level=basics
Intermediatehttps://realpython.com/search?level=intermediate
Advancedhttps://realpython.com/search?level=advanced
aihttps://realpython.com/tutorials/ai/
algorithmshttps://realpython.com/tutorials/algorithms/
apihttps://realpython.com/tutorials/api/
best-practiceshttps://realpython.com/tutorials/best-practices/
careerhttps://realpython.com/tutorials/career/
communityhttps://realpython.com/tutorials/community/
databaseshttps://realpython.com/tutorials/databases/
data-sciencehttps://realpython.com/tutorials/data-science/
data-structureshttps://realpython.com/tutorials/data-structures/
data-vizhttps://realpython.com/tutorials/data-viz/
devopshttps://realpython.com/tutorials/devops/
djangohttps://realpython.com/tutorials/django/
dockerhttps://realpython.com/tutorials/docker/
editorshttps://realpython.com/tutorials/editors/
flaskhttps://realpython.com/tutorials/flask/
front-endhttps://realpython.com/tutorials/front-end/
gamedevhttps://realpython.com/tutorials/gamedev/
guihttps://realpython.com/tutorials/gui/
machine-learninghttps://realpython.com/tutorials/machine-learning/
newshttps://realpython.com/tutorials/news/
numpyhttps://realpython.com/tutorials/numpy/
projectshttps://realpython.com/tutorials/projects/
pythonhttps://realpython.com/tutorials/python/
stdlibhttps://realpython.com/tutorials/stdlib/
testinghttps://realpython.com/tutorials/testing/
toolshttps://realpython.com/tutorials/tools/
web-devhttps://realpython.com/tutorials/web-dev/
web-scrapinghttps://realpython.com/tutorials/web-scraping/
Table of Contentshttps://realpython.com/python-parallel-processing/#toc
Recall the Fundamentals of Parallel Processinghttps://realpython.com/python-parallel-processing/#recall-the-fundamentals-of-parallel-processing
What’s Parallel Processing?https://realpython.com/python-parallel-processing/#whats-parallel-processing
How Do CPU-Bound and I/O-Bound Tasks Differ?https://realpython.com/python-parallel-processing/#how-do-cpu-bound-and-io-bound-tasks-differ
Why Do Modern Computers Favor Parallelism?https://realpython.com/python-parallel-processing/#why-do-modern-computers-favor-parallelism
How Can You Harness the Power of Multiple CPU Cores?https://realpython.com/python-parallel-processing/#how-can-you-harness-the-power-of-multiple-cpu-cores
Compare Multithreading in Python and Other Languageshttps://realpython.com/python-parallel-processing/#compare-multithreading-in-python-and-other-languages
Java Threads Solve CPU-Bound and I/O-Bound Problemshttps://realpython.com/python-parallel-processing/#java-threads-solve-cpu-bound-and-io-bound-problems
Python Threads Only Solve I/O-Bound Problemshttps://realpython.com/python-parallel-processing/#python-threads-only-solve-io-bound-problems
Python’s GIL Prevents Threads From Running in Parallelhttps://realpython.com/python-parallel-processing/#pythons-gil-prevents-threads-from-running-in-parallel
The GIL Ensures Thread Safety of the Python Internalshttps://realpython.com/python-parallel-processing/#the-gil-ensures-thread-safety-of-the-python-internals
Use Process-Based Parallelism Instead of Multithreadinghttps://realpython.com/python-parallel-processing/#use-process-based-parallelism-instead-of-multithreading
multiprocessing: Low-Level Control Over Processeshttps://realpython.com/python-parallel-processing/#multiprocessing-low-level-control-over-processes
concurrent.futures: High-Level Interface for Running Concurrent Taskshttps://realpython.com/python-parallel-processing/#concurrentfutures-high-level-interface-for-running-concurrent-tasks
Make Python Threads Run in Parallelhttps://realpython.com/python-parallel-processing/#make-python-threads-run-in-parallel
Use an Alternative Runtime Environment for Pythonhttps://realpython.com/python-parallel-processing/#use-an-alternative-runtime-environment-for-python
Install a GIL-Immune Library Like NumPyhttps://realpython.com/python-parallel-processing/#install-a-gil-immune-library-like-numpy
Write a C Extension Module With the GIL Releasedhttps://realpython.com/python-parallel-processing/#write-a-c-extension-module-with-the-gil-released
Have Cython Generate a C Extension Module for Youhttps://realpython.com/python-parallel-processing/#have-cython-generate-a-c-extension-module-for-you
Call a Foreign C Function Using ctypeshttps://realpython.com/python-parallel-processing/#call-a-foreign-c-function-using-ctypes
Try It Out: Parallel Image Processing in Pythonhttps://realpython.com/python-parallel-processing/#try-it-out-parallel-image-processing-in-python
Make a Graphical User Interface Using Tkinterhttps://realpython.com/python-parallel-processing/#make-a-graphical-user-interface-using-tkinter
Define a Command-Line Interface With argparsehttps://realpython.com/python-parallel-processing/#define-a-command-line-interface-with-argparse
Display a Scaled-Down Preview of the Loaded Imagehttps://realpython.com/python-parallel-processing/#display-a-scaled-down-preview-of-the-loaded-image
Interact With Your Application Through Mouse Eventshttps://realpython.com/python-parallel-processing/#interact-with-your-application-through-mouse-events
Write a C Function to Calculate the Pixel Formulahttps://realpython.com/python-parallel-processing/#write-a-c-function-to-calculate-the-pixel-formula
Process Color Channels in Separate Threads of Executionhttps://realpython.com/python-parallel-processing/#process-color-channels-in-separate-threads-of-execution
Build a Lookup Table for Common Pixel Valueshttps://realpython.com/python-parallel-processing/#build-a-lookup-table-for-common-pixel-values
Share Memory Between Python and C Through Pointershttps://realpython.com/python-parallel-processing/#share-memory-between-python-and-c-through-pointers
Conclusionhttps://realpython.com/python-parallel-processing/#conclusion
https://realpython.com/feedback/survey/article/python-parallel-processing/liked/?from=article-sidebar
https://realpython.com/feedback/survey/article/python-parallel-processing/disliked/?from=article-sidebar
Bartosz Zaczyńskihttps://realpython.com/python-parallel-processing/#author
https://realpython.com/python-parallel-processing/#reader-comments
advancedhttps://realpython.com/tutorials/advanced/
pythonhttps://realpython.com/tutorials/python/
Recall the Fundamentals of Parallel Processinghttps://realpython.com/python-parallel-processing/#recall-the-fundamentals-of-parallel-processing
What’s Parallel Processing?https://realpython.com/python-parallel-processing/#whats-parallel-processing
How Do CPU-Bound and I/O-Bound Tasks Differ?https://realpython.com/python-parallel-processing/#how-do-cpu-bound-and-io-bound-tasks-differ
Why Do Modern Computers Favor Parallelism?https://realpython.com/python-parallel-processing/#why-do-modern-computers-favor-parallelism
How Can You Harness the Power of Multiple CPU Cores?https://realpython.com/python-parallel-processing/#how-can-you-harness-the-power-of-multiple-cpu-cores
Compare Multithreading in Python and Other Languageshttps://realpython.com/python-parallel-processing/#compare-multithreading-in-python-and-other-languages
Java Threads Solve CPU-Bound and I/O-Bound Problemshttps://realpython.com/python-parallel-processing/#java-threads-solve-cpu-bound-and-io-bound-problems
Python Threads Only Solve I/O-Bound Problemshttps://realpython.com/python-parallel-processing/#python-threads-only-solve-io-bound-problems
Python’s GIL Prevents Threads From Running in Parallelhttps://realpython.com/python-parallel-processing/#pythons-gil-prevents-threads-from-running-in-parallel
The GIL Ensures Thread Safety of the Python Internalshttps://realpython.com/python-parallel-processing/#the-gil-ensures-thread-safety-of-the-python-internals
Use Process-Based Parallelism Instead of Multithreadinghttps://realpython.com/python-parallel-processing/#use-process-based-parallelism-instead-of-multithreading
multiprocessing: Low-Level Control Over Processeshttps://realpython.com/python-parallel-processing/#multiprocessing-low-level-control-over-processes
concurrent.futures: High-Level Interface for Running Concurrent Taskshttps://realpython.com/python-parallel-processing/#concurrentfutures-high-level-interface-for-running-concurrent-tasks
Make Python Threads Run in Parallelhttps://realpython.com/python-parallel-processing/#make-python-threads-run-in-parallel
Use an Alternative Runtime Environment for Pythonhttps://realpython.com/python-parallel-processing/#use-an-alternative-runtime-environment-for-python
Install a GIL-Immune Library Like NumPyhttps://realpython.com/python-parallel-processing/#install-a-gil-immune-library-like-numpy
Write a C Extension Module With the GIL Releasedhttps://realpython.com/python-parallel-processing/#write-a-c-extension-module-with-the-gil-released
Have Cython Generate a C Extension Module for Youhttps://realpython.com/python-parallel-processing/#have-cython-generate-a-c-extension-module-for-you
Call a Foreign C Function Using ctypeshttps://realpython.com/python-parallel-processing/#call-a-foreign-c-function-using-ctypes
Try It Out: Parallel Image Processing in Pythonhttps://realpython.com/python-parallel-processing/#try-it-out-parallel-image-processing-in-python
Make a Graphical User Interface Using Tkinterhttps://realpython.com/python-parallel-processing/#make-a-graphical-user-interface-using-tkinter
Define a Command-Line Interface With argparsehttps://realpython.com/python-parallel-processing/#define-a-command-line-interface-with-argparse
Display a Scaled-Down Preview of the Loaded Imagehttps://realpython.com/python-parallel-processing/#display-a-scaled-down-preview-of-the-loaded-image
Interact With Your Application Through Mouse Eventshttps://realpython.com/python-parallel-processing/#interact-with-your-application-through-mouse-events
Write a C Function to Calculate the Pixel Formulahttps://realpython.com/python-parallel-processing/#write-a-c-function-to-calculate-the-pixel-formula
Process Color Channels in Separate Threads of Executionhttps://realpython.com/python-parallel-processing/#process-color-channels-in-separate-threads-of-execution
Build a Lookup Table for Common Pixel Valueshttps://realpython.com/python-parallel-processing/#build-a-lookup-table-for-common-pixel-values
Share Memory Between Python and C Through Pointershttps://realpython.com/python-parallel-processing/#share-memory-between-python-and-c-through-pointers
Conclusionhttps://realpython.com/python-parallel-processing/#conclusion
Remove adshttps://realpython.com/account/join/
shared-memory parallelismhttps://en.wikipedia.org/wiki/Parallel_programming_model#Shared_memory
global interpreter lock (GIL)https://realpython.com/python-gil/
concurrencyhttps://realpython.com/python-concurrency/#what-is-concurrency
parallelismhttps://realpython.com/python-concurrency/#what-is-parallelism
multithreadinghttps://realpython.com/intro-to-python-threading/
foreign Python bindingshttps://realpython.com/python-bindings-overview/
C codehttps://realpython.com/c-for-python-programmers/
Click here to download the free sample codehttps://realpython.com/bonus/python-parallel-processing-code/
https://realpython.com/python-parallel-processing/#recall-the-fundamentals-of-parallel-processing
classic mechanismhttps://realpython.com/python-parallel-processing/#use-process-based-parallelism-instead-of-multithreading
Remove adshttps://realpython.com/account/join/
https://realpython.com/python-parallel-processing/#whats-parallel-processing
Flynn’s taxonomyhttps://en.wikipedia.org/wiki/Flynn%27s_taxonomy
SIMDhttps://en.wikipedia.org/wiki/Single_instruction,_multiple_data
MIMDhttps://en.wikipedia.org/wiki/Multiple_instruction,_multiple_data
https://files.realpython.com/media/parallel.bcf05cc11397.png
jobshttps://en.wikipedia.org/wiki/Job_(computing)
central processing unit (CPU)https://en.wikipedia.org/wiki/Central_processing_unit
multiple physical coreshttps://en.wikipedia.org/wiki/Multi-core_processor
clusterhttps://en.wikipedia.org/wiki/Computer_cluster
distributed machineshttps://en.wikipedia.org/wiki/Distributed_computing
context switchinghttps://en.wikipedia.org/wiki/Context_switch
CPU timehttps://en.wikipedia.org/wiki/CPU_time
https://files.realpython.com/media/concurrent.f333207efd07.png
multiple opponentshttps://en.wikipedia.org/wiki/Simultaneous_exhibition
The Queen’s Gambithttps://www.imdb.com/title/tt10048342/
round-robinhttps://en.wikipedia.org/wiki/Round-robin_scheduling
multitaskinghttps://en.wikipedia.org/wiki/Computer_multitasking
time-sharinghttps://en.wikipedia.org/wiki/Time-sharing
https://files.realpython.com/media/sequential.f52f718348b0.png
throughputhttps://en.wikipedia.org/wiki/Network_throughput
latencyhttps://en.wikipedia.org/wiki/Latency_(engineering)
starvinghttps://en.wikipedia.org/wiki/Starvation_(computer_science)
https://realpython.com/python-parallel-processing/#how-do-cpu-bound-and-io-bound-tasks-differ
clock ratehttps://en.wikipedia.org/wiki/Clock_rate
machine codehttps://en.wikipedia.org/wiki/Machine_code
CPU boundhttps://en.wikipedia.org/wiki/CPU-bound
enqueuinghttps://realpython.com/queue-in-python/
thread poolhttps://realpython.com/intro-to-python-threading/#using-a-threadpoolexecutor
I/O boundhttps://en.wikipedia.org/wiki/I/O_bound
input/outputhttps://en.wikipedia.org/wiki/Input/output
Memory-boundhttps://en.wikipedia.org/wiki/Memory-bound_function
time–memoryhttps://en.wikipedia.org/wiki/Space%E2%80%93time_tradeoff
Remove adshttps://realpython.com/account/join/
https://realpython.com/python-parallel-processing/#why-do-modern-computers-favor-parallelism
Moore’s lawhttps://en.wikipedia.org/wiki/Moore%27s_law
free lunch is overhttps://www.cs.utexas.edu/~lin/cs380p/Free_Lunch.pdf
multi-core processorshttps://en.wikipedia.org/wiki/Multi-core_processor
embarrassingly parallelhttps://en.wikipedia.org/wiki/Embarrassingly_parallel
Fibonacci numberhttps://realpython.com/fibonacci-sequence-python/
https://realpython.com/python-parallel-processing/#how-can-you-harness-the-power-of-multiple-cpu-cores
system processeshttps://en.wikipedia.org/wiki/Process_(computing)
data serializationhttps://en.wikipedia.org/wiki/Serialization
interprocess communication (IPC)https://en.wikipedia.org/wiki/Inter-process_communication
threadshttps://realpython.com/intro-to-python-threading/
race conditionshttps://realpython.com/intro-to-python-threading/#race-conditions
scalabilityhttps://en.wikipedia.org/wiki/Scalability
real-timehttps://en.wikipedia.org/wiki/Real-time
tens of thousandshttps://en.wikipedia.org/wiki/C10k_problem
coroutineshttps://en.wikipedia.org/wiki/Coroutine
preemptivehttps://en.wikipedia.org/wiki/Preemption_%28computing%29#Preemptive_multitasking
task schedulerhttps://en.wikipedia.org/wiki/Job_scheduler
cooperative multitaskinghttps://en.wikipedia.org/wiki/Cooperative_multitasking
asynchronous programminghttps://realpython.com/async-io-python/
Fibershttps://en.wikipedia.org/wiki/Fiber_(computer_science)
green threadshttps://en.wikipedia.org/wiki/Green_thread
user-spacehttps://en.wikipedia.org/wiki/User_space_and_kernel_space
greenlethttps://pypi.org/project/greenlet/
eventlethttps://pypi.org/project/eventlet/
https://realpython.com/python-parallel-processing/#compare-multithreading-in-python-and-other-languages
splitting datahttps://realpython.com/how-to-split-a-python-list-into-chunks/
return valuehttps://realpython.com/python-return-statement/
https://realpython.com/python-parallel-processing/#java-threads-solve-cpu-bound-and-io-bound-problems
Javahttps://realpython.com/java-vs-python/
Java Development Kit (JDK)https://en.wikipedia.org/wiki/Java_Development_Kit
Oracle Javahttps://www.oracle.com/java/
OpenJDKhttps://openjdk.org/
Dockerhttps://realpython.com/tutorials/docker/
recursivehttps://realpython.com/python-recursion/
Fibonacci sequencehttps://en.wikipedia.org/wiki/Fibonacci_sequence
time complexityhttps://en.wikipedia.org/wiki/Time_complexity
JShellhttps://en.wikipedia.org/wiki/JShell
Python’s REPLhttps://realpython.com/python-repl/
compilationhttps://en.wikipedia.org/wiki/Compilation
Java bytecodehttps://en.wikipedia.org/wiki/Java_bytecode
timehttps://en.wikipedia.org/wiki/Time_(Unix)
elapsed real timehttps://en.wikipedia.org/wiki/Elapsed_real_time
Intel’s Hyper-Threading Technologyhttps://en.wikipedia.org/wiki/Hyper-threading
monitoring toolhttps://en.wikipedia.org/wiki/System_monitor
https://files.realpython.com/media/threads_java.7f8a99069dd9.png
Remove adshttps://realpython.com/account/join/
https://realpython.com/python-parallel-processing/#python-threads-only-solve-io-bound-problems
run the above scripthttps://realpython.com/run-python-scripts/
https://files.realpython.com/media/threads_python.6a3d7bf733a5.png
resource contentionhttps://en.wikipedia.org/wiki/Resource_contention
switch intervalhttps://docs.python.org/3/library/sys.html#sys.setswitchinterval
infamous global interpreter lock (GIL)https://www.youtube.com/watch?v=4zeHStBowEk
simulationshttps://realpython.com/simpy-simulating-with-python/
https://realpython.com/python-parallel-processing/#pythons-gil-prevents-threads-from-running-in-parallel
POSIX threadshttps://en.wikipedia.org/wiki/Pthreads
overhauled GIL implementationhttps://mail.python.org/pipermail/python-dev/2009-October/093321.html
processor affinityhttps://en.wikipedia.org/wiki/Processor_affinity
https://files.realpython.com/media/cpu_affinity_clean.468c09400128.png
tasksethttps://man7.org/linux/man-pages/man1/taskset.1.html
Remove adshttps://realpython.com/account/join/
https://realpython.com/python-parallel-processing/#the-gil-ensures-thread-safety-of-the-python-internals
thread safetyhttps://en.wikipedia.org/wiki/Thread_safety
memory modelhttps://realpython.com/python-memory-management/
reference countinghttps://docs.python.org/3/extending/extending.html#reference-counting-in-python
memory leakshttps://en.wikipedia.org/wiki/Memory_leak
lockshttps://en.wikipedia.org/wiki/Lock_(computer_science)
Python/C APIhttps://docs.python.org/3/c-api/index.html
Larry Hastingshttps://www.youtube.com/watch?v=B_cQ0ykux_4
free-threadinghttps://dabeaz.blogspot.com/2011/08/inside-look-at-gil-removal-patch-of.html
pypy-stmhttps://doc.pypy.org/en/latest/stm.html
python-safethreadhttps://launchpad.net/python-safethread
PyParallelhttps://github.com/pyparallel/pyparallel
Gilectomyhttps://github.com/larryhastings/gilectomy/tree/gilectomy
nogilhttps://github.com/colesbury/nogil
PEP 703https://peps.python.org/pep-0703/
Guido van Rossumhttps://twitter.com/gvanrossum
Sourcehttps://www.artima.com/weblogs/viewpost.jsp?thread=214235
some implementationshttps://docs.python.org/3/faq/library.html#can-t-we-get-rid-of-the-global-interpreter-lock
PEP 554https://peps.python.org/pep-0554/
PEP 683https://peps.python.org/pep-0683/
PEP 703https://peps.python.org/pep-0703/
subprocesseshttps://realpython.com/python-subprocess/
https://realpython.com/python-parallel-processing/#use-process-based-parallelism-instead-of-multithreading
https://realpython.com/python-parallel-processing/#multiprocessing-low-level-control-over-processes
multiprocessinghttps://realpython.com/python-concurrency/#multiprocessing-version
threadinghttps://realpython.com/python-concurrency/#threading-version
name-main idiomhttps://realpython.com/if-name-main-python/
start methodhttps://docs.python.org/3/library/multiprocessing.html#contexts-and-start-methods
child processeshttps://en.wikipedia.org/wiki/Child_process
poolhttps://en.wikipedia.org/wiki/Pool_(computer_science)
data parallelismhttps://en.wikipedia.org/wiki/Data_parallelism
context managerhttps://realpython.com/python-with-statement/
map()https://realpython.com/python-map-function/
iterablehttps://realpython.com/python-iterators-iterables/#getting-to-know-python-iterables
range of integershttps://realpython.com/python-range/
synchronization primitiveshttps://docs.python.org/3/library/multiprocessing.html#synchronization-primitives
queuehttps://docs.python.org/3/library/multiprocessing.html#multiprocessing.Queue
pipehttps://docs.python.org/3/library/multiprocessing.html#multiprocessing.Pipe
shared memoryhttps://docs.python.org/3/library/multiprocessing.html#sharing-state-between-processes
managershttps://docs.python.org/3/library/multiprocessing.html#managers
boilerplate codehttps://en.wikipedia.org/wiki/Boilerplate_code
Remove adshttps://realpython.com/account/join/
https://realpython.com/python-parallel-processing/#concurrentfutures-high-level-interface-for-running-concurrent-tasks
camel casehttps://en.wikipedia.org/wiki/Camel_case
getters and settershttps://realpython.com/python-getter-setter/
Pythonichttps://realpython.com/learning-paths/writing-pythonic-code/
propertieshttps://realpython.com/python-property/
concurrency utilitieshttps://docs.oracle.com/javase/1.5.0/docs/guide/concurrency/overview.html
java.util.concurrent.Futurehttps://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/util/concurrent/Future.html
Executorhttps://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/util/concurrent/Executor.html
future objectshttps://en.wikipedia.org/wiki/Futures_and_promises
ProcessPoolExecutorhttps://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.ProcessPoolExecutor
generator objecthttps://realpython.com/introduction-to-python-generators/
lazily evaluatedhttps://en.wikipedia.org/wiki/Lazy_evaluation
forkinghttps://en.wikipedia.org/wiki/Fork_(system_call)
complex numberhttps://realpython.com/python-complex-numbers/
picklehttps://realpython.com/python-pickle-module/
Remove adshttps://realpython.com/account/join/
https://realpython.com/python-parallel-processing/#make-python-threads-run-in-parallel
https://realpython.com/python-parallel-processing/#use-an-alternative-runtime-environment-for-python
The Python programming languagehttps://docs.python.org/3/reference/index.html
The Python interpreterhttps://github.com/python/cpython/
standard libraryhttps://docs.python.org/3/library/index.html
Python’s grammarhttps://docs.python.org/3/reference/grammar.html
statementshttps://docs.python.org/3/glossary.html#term-statement
conditionalshttps://realpython.com/python-conditional-statements/
expressionshttps://docs.python.org/3/glossary.html#term-expression
lambda functionshttps://realpython.com/python-lambda/
syntaxhttps://realpython.com/invalid-syntax-python/
keywordshttps://realpython.com/python-keywords/
core data typeshttps://realpython.com/python-data-types/
operatorshttps://realpython.com/python-operators-expressions/
built-in functionshttps://docs.python.org/3/library/functions.html
print()https://realpython.com/python-print/
oshttps://docs.python.org/3/library/os.html
CPythonhttps://github.com/python/cpython
C programming languagehttps://realpython.com/c-for-python-programmers/
alternate implementationshttps://docs.python.org/3/reference/introduction.html#alternate-implementations
Java Virtual Machine (JVM)https://en.wikipedia.org/wiki/Java_virtual_machine
Common Language Runtime (CLR)https://en.wikipedia.org/wiki/Common_Language_Runtime
.NEThttps://en.wikipedia.org/wiki/.NET_Framework
pyenvhttps://realpython.com/intro-to-pyenv/
pyenv-winhttps://realpython.com/python-coding-setup-windows/#installing-python-with-pyenv-for-windows
Jythonhttps://www.jython.org/
IronPythonhttps://ironpython.net/
legacy Python 2.7https://www.python.org/doc/sunset-python-2/
forkhttps://en.wikipedia.org/wiki/Fork_(software_development)
earlier sectionhttps://realpython.com/python-parallel-processing/#the-gil-ensures-thread-safety-of-the-python-internals
nogilhttps://github.com/colesbury/nogil
shellhttps://en.wikipedia.org/wiki/Shell_(computing)
structural pattern matchinghttps://realpython.com/python310-new-features/#structural-pattern-matching
tomllibhttps://realpython.com/python-toml/
Remove adshttps://realpython.com/account/join/
https://realpython.com/python-parallel-processing/#install-a-gil-immune-library-like-numpy
NumPyhttps://realpython.com/numpy-tutorial/
Python bindingshttps://realpython.com/python-bindings-overview/
BLAShttps://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms
LAPACKhttps://en.wikipedia.org/wiki/LAPACK
vector featureshttps://en.wikipedia.org/wiki/Central_processing_unit#Data_parallelism
linear algebrahttps://realpython.com/python-linear-algebra/
np.show_config()https://numpy.org/doc/stable/reference/generated/numpy.show_config.html
np.show_runtime()https://numpy.org/doc/stable/reference/generated/numpy.show_runtime.html
OpenBLAShttps://en.wikipedia.org/wiki/OpenBLAS
Intel’s Haswellhttps://en.wikipedia.org/wiki/Haswell_(microarchitecture)
pthreadshttps://en.wikipedia.org/wiki/Pthreads
environment variablehttps://en.wikipedia.org/wiki/Environment_variable
matrix multiplicationhttps://en.wikipedia.org/wiki/Matrix_multiplication
virtual environmenthttps://realpython.com/python-virtual-environments-a-primer/
random number generatorhttps://realpython.com/numpy-random-number-generator/
@ operatorhttps://peps.python.org/pep-0465/
https://realpython.com/python-parallel-processing/#write-a-c-extension-module-with-the-gil-released
building a Python C extension modulehttps://realpython.com/build-python-c-extension-module/
Python/C APIhttps://docs.python.org/3/c-api/index.html
create an extension modulehttps://docs.python.org/3/extending/extending.html
ChatGPThttps://realpython.com/chatgpt-coding-mentor-python/
GitHub Copilothttps://realpython.com/github-copilot-python/
header filehttps://en.wikipedia.org/wiki/Include_directive#Header_files
function prototypeshttps://en.wikipedia.org/wiki/Function_prototype
type declarationshttps://en.wikipedia.org/wiki/Declaration_(computer_programming)
macroshttps://en.wikipedia.org/wiki/Macro_(computer_science)
familyhttps://en.wikipedia.org/wiki/List_of_C-family_programming_languages
wrapper functionhttps://en.wikipedia.org/wiki/Wrapper_function
glue codehttps://en.wikipedia.org/wiki/Glue_code
pointerhttps://realpython.com/pointers-in-python/
docstringhttps://realpython.com/how-to-write-docstrings-in-python/
sentinel valuehttps://en.wikipedia.org/wiki/Sentinel_value
subinterpretershttps://docs.python.org/3/c-api/init.html#sub-interpreter-support
special macroshttps://docs.python.org/3/c-api/init.html#releasing-the-gil-from-extension-code
shared libraryhttps://en.wikipedia.org/wiki/Library_(computing)#Shared_libraries
build toolchainhttps://en.wikipedia.org/wiki/Toolchain
gcchttps://en.wikipedia.org/wiki/GNU_Compiler_Collection
Python.hhttps://github.com/python/cpython/blob/main/Include/Python.h
python3-devhttps://packages.ubuntu.com/lunar/python3-dev
setuptoolshttps://setuptools.pypa.io/en/latest/
compiler’s flaghttps://en.wikipedia.org/wiki/CFLAGS
shared objecthttps://en.wikipedia.org/wiki/Shared_library
position-independent codehttps://en.wikipedia.org/wiki/Position-independent_code
current working directoryhttps://en.wikipedia.org/wiki/Working_directory
PYTHONPATHhttps://docs.python.org/3/using/cmdline.html#envvar-PYTHONPATH
mypy compiler (mypyc)https://github.com/mypyc/mypyc
Remove adshttps://realpython.com/account/join/
https://realpython.com/python-parallel-processing/#have-cython-generate-a-c-extension-module-for-you
Cythonhttps://cython.org/
NumPyhttps://numpy.org/
lxmlhttps://realpython.com/python-xml-parser/#lxml-use-elementtree-on-steroids
Pyrexhttps://en.wikipedia.org/wiki/Pyrex_(programming_language)
context managerhttps://realpython.com/python-with-statement/
function signaturehttps://en.wikipedia.org/wiki/Type_signature#Signature
exceptionshttps://realpython.com/python-exceptions/
IDE or code editorhttps://realpython.com/python-ides-code-editors-guide/
Cython 3.0.0 releasehttps://cython.readthedocs.io/en/latest/src/changes.html#unified-release-notes
pure-Python syntax varianthttps://cython.readthedocs.io/en/latest/src/tutorial/pure.html
type hintshttps://realpython.com/python-type-checking/#type-hints-for-methods
variable annotationshttps://realpython.com/python-type-checking/#variable-annotations
piphttps://realpython.com/what-is-pip/
PyPy extension moduleshttps://doc.pypy.org/en/latest/extending.html
port your Cython code to PyPyhttps://cython.readthedocs.io/en/latest/src/userguide/pypy.html
build Cython codehttps://cython.readthedocs.io/en/latest/src/quickstart/build.html
version controlhttps://realpython.com/python-git-github-intro/
.gitignorehttps://git-scm.com/docs/gitignore
profilehttps://realpython.com/python-profiling/
Remove adshttps://realpython.com/account/join/
https://realpython.com/python-parallel-processing/#call-a-foreign-c-function-using-ctypes
foreign function interface (FFI)https://en.wikipedia.org/wiki/Foreign_function_interface
libffi libraryhttps://en.wikipedia.org/wiki/Libffi
dynamic-link librarieshttps://en.wikipedia.org/wiki/Dynamic-link_library
C++https://isocpp.org/
Rusthttps://www.rust-lang.org/
Gohttps://go.dev/
dynamically loadinghttps://en.wikipedia.org/wiki/Dynamic_loading
Sourcehttps://docs.python.org/3/library/ctypes.html
system directorieshttps://en.wikipedia.org/wiki/Unix_filesystem#Conventional_directory_layout
process-based parallelismhttps://realpython.com/python-parallel-processing/#use-process-based-parallelism-instead-of-multithreading
pointershttps://realpython.com/pointers-in-python/
segmentation faultshttps://en.wikipedia.org/wiki/Segmentation_fault
function prototypeshttps://en.wikipedia.org/wiki/Function_prototype
C typeshttps://docs.python.org/3/library/ctypes.html#fundamental-data-types
CFFIhttps://cffi.readthedocs.io/en/latest/
SWIGhttps://www.swig.org/
pybind11https://pypi.org/project/pybind11/
PyPyhttps://www.pypy.org/
Numbahttps://numba.pydata.org/
Nuitkahttps://nuitka.net/
Shed Skinhttps://shedskin.github.io/
othershttps://realpython.com/python-bindings-overview/#other-solutions
just-in-time (JIT)https://en.wikipedia.org/wiki/Just-in-time_compilation
Taichi Langhttps://www.taichi-lang.org/
kernelshttps://en.wikipedia.org/wiki/Compute_kernel
graphics processing unit (GPU)https://en.wikipedia.org/wiki/Graphics_processing_unit
Remove adshttps://realpython.com/account/join/
https://realpython.com/python-parallel-processing/#try-it-out-parallel-image-processing-in-python
Pillowhttps://realpython.com/image-processing-with-the-python-pillow-library/
exposure valuehttps://en.wikipedia.org/wiki/Exposure_value
gamma correctionhttps://en.wikipedia.org/wiki/Gamma_correction
https://files.realpython.com/media/project.e1e383153807.png
real timehttps://en.wikipedia.org/wiki/Real-time
https://files.realpython.com/media/equation.6d9d7ae78e2d.png
color spacehttps://en.wikipedia.org/wiki/Color_space
raster imagehttps://en.wikipedia.org/wiki/Raster_graphics
Click here to download the free sample codehttps://realpython.com/bonus/python-parallel-processing-code/
https://realpython.com/python-parallel-processing/#make-a-graphical-user-interface-using-tkinter
Tkinter GUI frameworkhttps://realpython.com/python-gui-tkinter/
classhttps://realpython.com/python-classes/
class initializer methodhttps://realpython.com/python-class-constructor/#object-initialization-with-__init__
super()https://realpython.com/python-super/
event loophttps://en.wikipedia.org/wiki/Event_loop
pass statementhttps://realpython.com/python-pass/
Tk themed widgets (ttk)https://docs.python.org/3/library/tkinter.ttk.html
look and feelhttps://en.wikipedia.org/wiki/Look_and_feel
grid geometry managerhttps://tkdocs.com/tutorial/grid.html
widgetshttps://en.wikipedia.org/wiki/Graphical_widget
double-precision floating-pointhttps://en.wikipedia.org/wiki/Double-precision_floating-point_format
tk.DoubleVarhttps://tkdocs.com/pyref/doublevar.html
data bindinghttps://en.wikipedia.org/wiki/Data_binding
event handlerhttps://tkdocs.com/tutorial/concepts.html#events
https://realpython.com/python-parallel-processing/#define-a-command-line-interface-with-argparse
argparsehttps://realpython.com/command-line-interfaces-python-argparse/
pathlib.Pathhttps://realpython.com/python-pathlib/
entry pointhttps://en.wikipedia.org/wiki/Entry_point
name-main idiomhttps://realpython.com/if-name-main-python/
Click here to download the free sample codehttps://realpython.com/bonus/python-parallel-processing-code/
https://realpython.com/python-parallel-processing/#display-a-scaled-down-preview-of-the-loaded-image
PyGamehttps://realpython.com/pygame-a-primer/
thumbnailhttps://en.wikipedia.org/wiki/Thumbnail
https://realpython.com/python-parallel-processing/#interact-with-your-application-through-mouse-events
logarithmic scalehttps://en.wikipedia.org/wiki/Logarithmic_scale
power functionhttps://en.wikipedia.org/wiki/Exponentiation#Power_functions
non-linearhttps://en.wikipedia.org/wiki/Nonlinear_system
human visual systemhttps://en.wikipedia.org/wiki/Visual_system
timehttps://realpython.com/python-timer/
in placehttps://en.wikipedia.org/wiki/In-place_algorithm
https://realpython.com/python-parallel-processing/#write-a-c-function-to-calculate-the-pixel-formula
RGB color modelhttps://en.wikipedia.org/wiki/RGB_color_model
color channelshttps://en.wikipedia.org/wiki/Channel_(digital_image)
listshttps://realpython.com/python-list/
mathhttps://en.wikipedia.org/wiki/C_mathematical_functions
JPEGhttps://en.wikipedia.org/wiki/JPEG
normalized pixel valueshttps://en.wikipedia.org/wiki/Normalization_(image_processing)
integer overflowhttps://en.wikipedia.org/wiki/Integer_overflow
https://realpython.com/python-parallel-processing/#process-color-channels-in-separate-threads-of-execution
splithttps://realpython.com/how-to-split-a-python-list-into-chunks/
multiple dimensionshttps://realpython.com/how-to-split-a-python-list-into-chunks/#split-multidimensional-data
row-major orderhttps://en.wikipedia.org/wiki/Row-_and_column-major_order
data localityhttps://en.wikipedia.org/wiki/Locality_of_reference
CPU cachehttps://en.wikipedia.org/wiki/CPU_cache
for loophttps://en.cppreference.com/w/c/language/for
https://realpython.com/python-parallel-processing/#build-a-lookup-table-for-common-pixel-values
pigeonhole principlehttps://en.wikipedia.org/wiki/Pigeonhole_principle
lookup table (LUT)https://en.wikipedia.org/wiki/Lookup_table
global variablehttps://realpython.com/python-use-global-variable-in-function/
mutual exclusionhttps://en.wikipedia.org/wiki/Mutual_exclusion
race conditionshttps://en.wikipedia.org/wiki/Race_condition
https://realpython.com/python-parallel-processing/#share-memory-between-python-and-c-through-pointers
.ctypeshttps://numpy.org/doc/stable/reference/generated/numpy.ndarray.ctypes.html
Full HDhttps://en.wikipedia.org/wiki/1080p
panoramic imagehttps://en.wikipedia.org/wiki/Panorama
Taichi Langhttps://www.taichi-lang.org/
https://realpython.com/python-parallel-processing/#conclusion
Click here to download the free sample codehttps://realpython.com/bonus/python-parallel-processing-code/
https://realpython.com/feedback/survey/article/python-parallel-processing/liked/?from=article-footer
https://realpython.com/feedback/survey/article/python-parallel-processing/disliked/?from=article-footer
https://realpython.com/team/bzaczynski/
» More about Bartoszhttps://realpython.com/team/bzaczynski/
https://realpython.com/team/asantos/
Aldrenhttps://realpython.com/team/asantos/
https://realpython.com/team/gahjelle/
Geir Arnehttps://realpython.com/team/gahjelle/
https://realpython.com/team/kfinegan/
Katehttps://realpython.com/team/kfinegan/
Level Up Your Python Skills »https://realpython.com/account/join/?utm_source=rp_article_footer&utm_content=python-parallel-processing
Level Up Your Python Skills »https://realpython.com/account/join/?utm_source=rp_article_footer&utm_content=python-parallel-processing
https://realpython.com/feedback/survey/article/python-parallel-processing/liked/?from=article-comments
https://realpython.com/feedback/survey/article/python-parallel-processing/disliked/?from=article-comments
LinkedInhttps://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Frealpython.com%2Fpython-parallel-processing%2F
Twitterhttps://twitter.com/intent/tweet/?text=Interesting%20Python%20article%20on%20%40realpython%3A%20Bypassing%20the%20GIL%20for%20Parallel%20Processing%20in%20Python&url=https%3A%2F%2Frealpython.com%2Fpython-parallel-processing%2F
Blueskyhttps://bsky.app/intent/compose?text=Interesting%20Python%20article%20on%20%40realpython.com%3A%20Bypassing%20the%20GIL%20for%20Parallel%20Processing%20in%20Python%20https%3A%2F%2Frealpython.com%2Fpython-parallel-processing%2F
Facebookhttps://facebook.com/sharer/sharer.php?u=https%3A%2F%2Frealpython.com%2Fpython-parallel-processing%2F
Get tips for asking good questionshttps://realpython.com/python-beginner-tips/#tip-9-ask-good-questions
get answers to common questions in our support portalhttps://support.realpython.com
Real Python Community Chathttps://realpython.com/community/
“Office Hours” Live Q&A Sessionhttps://realpython.com/office-hours/
advancedhttps://realpython.com/tutorials/advanced/
pythonhttps://realpython.com/tutorials/python/
Speed Up Your Python Program With Concurrencyhttps://realpython.com/python-concurrency/?utm_source=realpython&utm_medium=web&utm_campaign=related-post&utm_content=python-parallel-processing
What Is the Python Global Interpreter Lock (GIL)?https://realpython.com/python-gil/?utm_source=realpython&utm_medium=web&utm_campaign=related-post&utm_content=python-parallel-processing
An Intro to Threading in Pythonhttps://realpython.com/intro-to-python-threading/?utm_source=realpython&utm_medium=web&utm_campaign=related-post&utm_content=python-parallel-processing
Python 3.14: Cool New Features for You to Tryhttps://realpython.com/python314-new-features/?utm_source=realpython&utm_medium=web&utm_campaign=related-post&utm_content=python-parallel-processing
Python Thread Safety: Using a Lock and Other Techniqueshttps://realpython.com/python-thread-lock/?utm_source=realpython&utm_medium=web&utm_campaign=related-post&utm_content=python-parallel-processing
https://realpython.com/account/signup/?intent=continue_reading&utm_source=rp&utm_medium=web&utm_campaign=rwn&utm_content=v1&next=%2Fpython-parallel-processing%2F
Continue »https://realpython.com/account/signup/?intent=continue_reading&utm_source=rp&utm_medium=web&utm_campaign=rwn&utm_content=v1&next=%2Fpython-parallel-processing%2F
Sign-Inhttps://realpython.com/account/login/?next=/python-parallel-processing/
Start Herehttps://realpython.com/start-here/
Learning Resourceshttps://realpython.com/search
Code Mentorhttps://realpython.com/mentor/
Python Referencehttps://realpython.com/ref/
Python Cheat Sheethttps://realpython.com/cheatsheets/python/
Support Centerhttps://support.realpython.com/
Learning Pathshttps://realpython.com/learning-paths/
Quizzes & Exerciseshttps://realpython.com/quizzes/
Browse Topicshttps://realpython.com/tutorials/all/
Live Courseshttps://realpython.com/live/
Bookshttps://realpython.com/books/
Podcasthttps://realpython.com/podcasts/rpp/
Newsletterhttps://realpython.com/newsletter/
Community Chathttps://realpython.com/community/
Office Hourshttps://realpython.com/office-hours/
Learner Storieshttps://realpython.com/learner-stories/
Plans & Pricinghttps://realpython.com/account/join/
Team Planshttps://realpython.com/account/join-team/
For Businesshttps://realpython.com/account/join-team/inquiry/
For Schoolshttps://realpython.com/account/join-team/education-inquiry/
Reviewshttps://realpython.com/learner-stories/
About Ushttps://realpython.com/about/
Teamhttps://realpython.com/team/
Mission & Valueshttps://realpython.com/mission/
Editorial Guidelineshttps://realpython.com/editorial-guidelines/
Sponsorshipshttps://realpython.com/sponsorships/
Careershttps://realpython.workable.com
Press Kithttps://realpython.com/media-kit/
Merchhttps://realpython.com/merch
https://www.youtube.com/realpython
https://x.com/realpython
https://www.linkedin.com/company/realpython-com
https://www.facebook.com/LearnRealPython
https://github.com/realpython/
Privacy Policyhttps://realpython.com/privacy-policy/
Terms of Usehttps://realpython.com/terms/
Securityhttps://realpython.com/security/
Contacthttps://realpython.com/contact/
https://realpython.com/

Viewport: width=device-width, initial-scale=1, shrink-to-fit=no, viewport-fit=cover

Robots: max-image-preview:large


URLs of crawlers that visited me.