You’ve got the understanding to decide which concurrency method you should use for a given problem, or if you should use any at all! In addition, you’ve achieved a better understanding of some of the problems that can arise when you’re using concurrency.
In this course, you’ve learned how to:
- Understand how latency between the CPU and compoments of your computer provide opportunities for concurrency
- Use the
threading
library to write concurrent programs - Write code using
async
andawait
with theasyncio
library - Get full use of all your CPUs with the
multiprocessing
library - Distinguish between I/O bound and CPU bound workloads
Here are resources for additional information about latency:
Here are resources about concurrency and the Python GIL:
- Concurrency: Wikipedia article
- Python GIL: Real Python article
- Global Interperter Lock: Wikipedia article
Here are resources about PEP 554 and Subinterpreters:
Here are resources about threading, futures and asyncio:
- Threading: Python Docs
- Intro to Python Threading: Real Python article
- Futures: Python Docs
- Async IO in Python: A Complete Walkthrough - Real Python article
- How does asyncio work?: Stackoverflow
Here are resources about multiprocessing and distributed programming:
- Multiprocessing: Python Docs
- Python multiprocessing tutoria: Zetcodel
- Distributed Programming: Wikipedia article
- Dask
- Real Python Podcast Episode 112: Managing Large Python Data Science Projects With Dask
- Asynchronous Tasks With Django and Celery: Real Python article
Congratulations, you made it to the end of the course! What’s your #1 takeaway or favorite thing you learned? How are you going to put your newfound skills to use? Leave a comment in the discussion section and let us know.
frankhofstede on Dec. 15, 2020
I think the celery link is broken.