Fabian Schindler

Concurrency in Python

Is Python's Global Interpreter Lock slowing you down? Learn when to use multiprocessing or asyncio to unlock true parallel performance.

Concurrency in Python
#1about 4 minutes

Defining concurrency, parallelism, and multitasking

Key terms like concurrency, parallelism, cooperative multitasking, and preemptive multitasking are defined to build a foundational understanding.

#2about 3 minutes

Weighing the benefits and complexity of multitasking

Multitasking can improve performance and reduce costs, but it introduces complexity, non-determinism, and is limited by Amdahl's Law.

#3about 5 minutes

Understanding the differences between processes and threads

Processes are isolated with higher overhead, while threads are lightweight and share memory, with examples using Python's `threading` and `multiprocessing` modules.

#4about 1 minute

Simplifying concurrency with executor pools

The `concurrent.futures` module provides a high-level interface with `ThreadPoolExecutor` and `ProcessPoolExecutor` to easily apply a function to multiple data items.

#5about 5 minutes

How to prevent data corruption with locks

Race conditions occur when multiple threads access shared data simultaneously, which can be prevented by using a mutex or `threading.Lock` to ensure exclusive access.

#6about 2 minutes

How Python's global interpreter lock affects multithreading

The GIL is a mutex that protects access to Python objects, preventing multiple native threads from executing Python bytecodes at the same time and impacting CPU-bound tasks.

#7about 4 minutes

Overcoming thread limitations with event-driven programming

The C10k problem highlights the inefficiency of a thread-per-client model, leading to event-driven solutions like asynchronous programming to handle many concurrent connections.

#8about 5 minutes

Writing concurrent code with async and await

Python's `async` and `await` keywords enable cooperative multitasking, allowing you to run many tasks concurrently on a single thread using an event loop from the `asyncio` module.

#9about 2 minutes

Building high-performance web services with Starlette

The Starlette web framework demonstrates how `asyncio` can be used to build highly concurrent web servers capable of handling many clients efficiently.

#10about 2 minutes

Q&A on Python's speed and choosing thread counts

Answers to common questions address Python's perceived slowness by working around limitations like the GIL and explain that benchmarking is key to finding the optimal number of threads.

Related jobs
Jobs that call for the skills explored in this talk.
SabIna compys

SabIna compys
Vienna, Austria

Remote
20-100K
Intermediate
JavaScript
.NET
+1

Featured Partners

Related Articles

View all articles
CH
Chris Heilmann
All the videos of Halfstack London 2024!
Last month was Halfstack London, a conference about the web, JavaScript and half a dozen other things. We were there to deliver a talk, but also to record all the sessions and we're happy to share them with you. It took a bit as we had to wait for th...
All the videos of Halfstack London 2024!
LM
Luis Minvielle
The Best Upcoming IT Webinars
Now that you already know what IT webinars are and how they can help you level up your professional appeal, you might want actually to get into one. Live tech webinars are one of the best ways to stay on top of the latest trends and tools because eit...
The Best Upcoming IT Webinars

From learning to earning

Jobs that call for the skills explored in this talk.

Python Engineer

Usersnap
Vienna, Austria

Intermediate
Python
Amazon Web Services (AWS)