Real Python
  • Start Here
  • Learn Python
    Python Tutorials →
    In-depth articles and video courses
    Learning Paths →
    Guided study plans for accelerated learning
    Quizzes & Exercises →
    Check your learning progress
    Browse Topics →
    Focus on a specific area or skill level
    Community Chat →
    Learn with other Pythonistas
    Office Hours →
    Live Q&A calls with Python experts
    Podcast →
    Hear what’s new in the world of Python
    Books →
    Round out your knowledge and learn offline
    Reference →
    Concise definitions for common Python terms
    Code Mentor →Beta
    Personalized code assistance & learning tools
    Unlock All Content →
  • More
    Learner Stories Python Newsletter Python Job Board Meet the Team Become a Tutorial Writer Become a Video Instructor
  • Search
  • Join
  • Sign‑In
Browse Topics Guided Learning Paths
Basics Intermediate Advanced
ai algorithms api best-practices career community databases data-science data-structures data-viz devops django docker editors flask front-end gamedev gui machine-learning news numpy projects python stdlib testing tools web-dev web-scraping

Table of Contents

  • Understanding Asynchronous Programming
    • Building a Synchronous Web Server
    • Thinking Differently About Programming
  • Programming Parents: Not as Easy as It Looks!
    • Thought Experiment #1: The Synchronous Parent
    • Thought Experiment #2: The Polling Parent
    • Thought Experiment #3: The Threading Parent
  • Using Python Async Features in Practice
    • Synchronous Programming
    • Simple Cooperative Concurrency
    • Cooperative Concurrency With Blocking Calls
    • Cooperative Concurrency With Non-Blocking Calls
    • Synchronous (Blocking) HTTP Calls
    • Asynchronous (Non-Blocking) HTTP Calls
  • Conclusion