search
HomeBackend DevelopmentPython TutorialWhat are synchronization, asynchronous, blocking and non-blocking in Python?

    1. Status introduction

    Before understanding other concepts, we must first understand several states of the process. During the running of the program, due to the control of the scheduling algorithm of the operating system, the program will enter several states: ready, running and blocked.

    • Ready (Ready) state: When the process has been allocated all necessary resources except the CPU, it can be executed immediately as long as it obtains the processor. The process state at this time is called the ready state. .

    • Execution/Running (Running) state When the process has obtained a processor and its program is being executed on the processor, the process state at this time is called the execution state.

    • When a process that is executing in the Blocked state cannot be executed because it is waiting for an event to occur, it abandons the processor and is in a blocked state. There can be many types of events that cause process blocking, such as waiting for I/O to be completed, application buffer being unsatisfied, waiting for letters (signals), etc.

    2. Synchronization and asynchronousness

    The so-called asynchronous means that there is no need to wait for the dependent task to complete, but only to notify the dependent task of what work to complete, and the dependent task also Execute immediately, as long as you complete the entire task, it will be completed. As for whether the dependent task is actually completed in the end, the task that depends on it cannot be determined, so it is an unreliable task sequence.

    Example

    • The first way: choose to wait in line;

    • The second way: choose to take a small note on it I have my number, and when my number is reached, the person at the counter will notify me that it is my turn to handle the business;

    The first type: the former (waiting in line) is synchronization Waiting for message notification, that is, I have to wait for the bank's business status;

    The second type: the latter (waiting for notification from others) is to wait for message notification asynchronously. In asynchronous message processing, the person waiting for the message notification (in this case, the person waiting to handle the business) often registers a callback mechanism. When the awaited event is triggered, the triggering mechanism (in this case, the person at the counter) passes some kind of callback mechanism. The mechanism (in this case a number written on a small piece of paper, called a number) finds the person waiting for the event.

    3. Blocking and non-blocking

    Example

    Continue the above example, whether you are queuing or using a number to wait for notification, if during the waiting process, the waiter If you cannot do anything else except wait for message notification, then the mechanism is blocking, which is reflected in the program, that is, the program has been blocked at the function call and cannot continue to execute.

    On the contrary, some people like to make calls and send text messages while waiting while handling these services at the bank. This state is non-blocking because he (the waiter) is not blocked on this message notification. , but wait while doing your own thing.

    Note: The synchronous non-blocking form is actually inefficient. Imagine that you are talking on the phone and need to look up to see if the queue is waiting for you. If making a call and observing the queue position are regarded as two operations of the program, the program needs to switch back and forth between these two different behaviors, which is obviously inefficient; the asynchronous non-blocking form is There is no such problem, because making a call is your business (the waiter), and notifying you is the counter's (message triggering mechanism) business, and the program does not switch back and forth between two different operations.

    4. Synchronous/asynchronous and blocking/non-blocking

    1. Asynchronous blocking form

    If people waiting to handle business at the bank use an asynchronous method to wait for messages Being triggered (notified) means receiving a small note. If he cannot leave the bank to do other things during this period of time, then it is obvious that this person is blocked in this waiting operation.

    Asynchronous operations can be blocked, but they are not blocked while processing messages, but blocked while waiting for message notification.

    2. Synchronous non-blocking form

    Imagine that while you are making a phone call, you still need to look up to see if the queue has reached you. If you think of calling and observing the queue position as If there are two operations in the program, the program needs to switch back and forth between these two different behaviors, which is conceivably inefficient.

    3. Asynchronous non-blocking form

    Because calling is your (waiter)'s business, and notifying you is the counter's (message triggering mechanism)'s business, the program does not have two different Switch back and forth during the operation.

    For example, this person suddenly realizes that he is addicted to cigarettes and needs to go out for a smoke, so he tells the lobby manager that when his number is reached, please go outside and notify me, then he will not be Blocking on this waiting operation is naturally an asynchronous non-blocking method.

    The above is the detailed content of What are synchronization, asynchronous, blocking and non-blocking in Python?. For more information, please follow other related articles on the PHP Chinese website!

    Statement
    This article is reproduced at:亿速云. If there is any infringement, please contact admin@php.cn delete
    Python vs. C  : Learning Curves and Ease of UsePython vs. C : Learning Curves and Ease of UseApr 19, 2025 am 12:20 AM

    Python is easier to learn and use, while C is more powerful but complex. 1. Python syntax is concise and suitable for beginners. Dynamic typing and automatic memory management make it easy to use, but may cause runtime errors. 2.C provides low-level control and advanced features, suitable for high-performance applications, but has a high learning threshold and requires manual memory and type safety management.

    Python vs. C  : Memory Management and ControlPython vs. C : Memory Management and ControlApr 19, 2025 am 12:17 AM

    Python and C have significant differences in memory management and control. 1. Python uses automatic memory management, based on reference counting and garbage collection, simplifying the work of programmers. 2.C requires manual management of memory, providing more control but increasing complexity and error risk. Which language to choose should be based on project requirements and team technology stack.

    Python for Scientific Computing: A Detailed LookPython for Scientific Computing: A Detailed LookApr 19, 2025 am 12:15 AM

    Python's applications in scientific computing include data analysis, machine learning, numerical simulation and visualization. 1.Numpy provides efficient multi-dimensional arrays and mathematical functions. 2. SciPy extends Numpy functionality and provides optimization and linear algebra tools. 3. Pandas is used for data processing and analysis. 4.Matplotlib is used to generate various graphs and visual results.

    Python and C  : Finding the Right ToolPython and C : Finding the Right ToolApr 19, 2025 am 12:04 AM

    Whether to choose Python or C depends on project requirements: 1) Python is suitable for rapid development, data science, and scripting because of its concise syntax and rich libraries; 2) C is suitable for scenarios that require high performance and underlying control, such as system programming and game development, because of its compilation and manual memory management.

    Python for Data Science and Machine LearningPython for Data Science and Machine LearningApr 19, 2025 am 12:02 AM

    Python is widely used in data science and machine learning, mainly relying on its simplicity and a powerful library ecosystem. 1) Pandas is used for data processing and analysis, 2) Numpy provides efficient numerical calculations, and 3) Scikit-learn is used for machine learning model construction and optimization, these libraries make Python an ideal tool for data science and machine learning.

    Learning Python: Is 2 Hours of Daily Study Sufficient?Learning Python: Is 2 Hours of Daily Study Sufficient?Apr 18, 2025 am 12:22 AM

    Is it enough to learn Python for two hours a day? It depends on your goals and learning methods. 1) Develop a clear learning plan, 2) Select appropriate learning resources and methods, 3) Practice and review and consolidate hands-on practice and review and consolidate, and you can gradually master the basic knowledge and advanced functions of Python during this period.

    Python for Web Development: Key ApplicationsPython for Web Development: Key ApplicationsApr 18, 2025 am 12:20 AM

    Key applications of Python in web development include the use of Django and Flask frameworks, API development, data analysis and visualization, machine learning and AI, and performance optimization. 1. Django and Flask framework: Django is suitable for rapid development of complex applications, and Flask is suitable for small or highly customized projects. 2. API development: Use Flask or DjangoRESTFramework to build RESTfulAPI. 3. Data analysis and visualization: Use Python to process data and display it through the web interface. 4. Machine Learning and AI: Python is used to build intelligent web applications. 5. Performance optimization: optimized through asynchronous programming, caching and code

    Python vs. C  : Exploring Performance and EfficiencyPython vs. C : Exploring Performance and EfficiencyApr 18, 2025 am 12:20 AM

    Python is better than C in development efficiency, but C is higher in execution performance. 1. Python's concise syntax and rich libraries improve development efficiency. 2.C's compilation-type characteristics and hardware control improve execution performance. When making a choice, you need to weigh the development speed and execution efficiency based on project needs.

    See all articles

    Hot AI Tools

    Undresser.AI Undress

    Undresser.AI Undress

    AI-powered app for creating realistic nude photos

    AI Clothes Remover

    AI Clothes Remover

    Online AI tool for removing clothes from photos.

    Undress AI Tool

    Undress AI Tool

    Undress images for free

    Clothoff.io

    Clothoff.io

    AI clothes remover

    AI Hentai Generator

    AI Hentai Generator

    Generate AI Hentai for free.

    Hot Tools

    mPDF

    mPDF

    mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

    VSCode Windows 64-bit Download

    VSCode Windows 64-bit Download

    A free and powerful IDE editor launched by Microsoft

    EditPlus Chinese cracked version

    EditPlus Chinese cracked version

    Small size, syntax highlighting, does not support code prompt function

    MantisBT

    MantisBT

    Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

    SublimeText3 Chinese version

    SublimeText3 Chinese version

    Chinese version, very easy to use