广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python中的同步异步阻塞与非阻塞是什么
  • 445
分享到

Python中的同步异步阻塞与非阻塞是什么

2023-07-05 17:07:25 445人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

今天小编给大家分享一下python中的同步异步阻塞与非阻塞是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、状态介绍在

今天小编给大家分享一下python中的同步异步阻塞与非阻塞是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

    一、状态介绍

    在了解其他概念之前,我们首先要了解进程的几个状态。在程序运行的过程中,由于被操作系统的调度算法控制,程序会进入几个状态:就绪,运行和阻塞。

    • 就绪(Ready)状态:当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。

    • 执行/运行(Running)状态当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。

    • 阻塞(Blocked)状态正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不能满足、等待信件(信号)等。

    二、同步和异步

    所谓异步是不需要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工作,依赖的任务也立即执行,只要自己完成了整个任务就算完成了。至于被依赖的任务最终是否真正完成,依赖它的任务无法确定,所以它是不可靠的任务序列。

    例子

    • 第一种 :选择排队等候;

    • 第二种 :选择取一个小纸条上面有我的号码,等到排到我这一号时由柜台的人通知我轮到我去办理业务了;

    第一种:前者(排队等候)就是同步等待消息通知,也就是我要一直在等待银行办理业务情况;

    第二种:后者(等待别人通知)就是异步等待消息通知。在异步消息处理中,等待消息通知者(在这个例子中就是等待办理业务的人)往往注册一个回调机制,在所等待的事件被触发时由触发机制(在这里是柜台的人)通过某种机制(在这里是写在小纸条上的号码,喊号)找到等待该事件的人。

    三、阻塞和非阻塞

    例子

    继续上面的那个例子,不论是排队还是使用号码等待通知,如果在这个等待的过程中,等待者除了等待消息通知之外不能做其它的事情,那么该机制就是阻塞的,表现在程序中,也就是该程序一直阻塞在该函数调用处不能继续往下执行。

    相反,有的人喜欢在银行办理这些业务的时候一边打打电话发发短信一边等待,这样的状态就是非阻塞的,因为他(等待者)没有阻塞在这个消息通知上,而是一边做自己的事情一边等待。

    注意:同步非阻塞形式实际上是效率低下的,想象一下你一边打着电话一边还需要抬头看到底队伍排到你了没有。如果把打电话和观察排队的位置看成是程序的两个操作的话,这个程序需要在这两种不同的行为之间来回的切换,效率可想而知是低下的;而异步非阻塞形式却没有这样的问题,因为打电话是你(等待者)的事情,而通知你则是柜台(消息触发机制)的事情,程序没有在两种不同的操作中来回切换。

    四、同步/异步和阻塞/非阻塞

    1.异步阻塞形式

    如果在银行等待办理业务的人采用的是异步的方式去等待消息被触发(通知),也就是领了一张小纸条,假如在这段时间里他不能离开银行做其它的事情,那么很显然,这个人被阻塞在了这个等待的操作上面。

    异步操作是可以被阻塞住的,只不过它不是在处理消息时阻塞,而是在等待消息通知时被阻塞。

    2.同步非阻塞形式

    想象一下你一边打着电话一边还需要抬头看到底队伍排到你了没有,如果把打电话和观察排队的位置看成是程序的两个操作的话,这个程序需要在这两种不同的行为之间来回的切换,效率可想而知是低下的。

    3.异步非阻塞形式

    因为打电话是你(等待者)的事情,而通知你则是柜台(消息触发机制)的事情,程序没有在两种不同的操作中来回切换。

    比如说,这个人突然发觉自己烟瘾犯了,需要出去抽根烟,于是他告诉大堂经理说,排到我这个号码的时候麻烦到外面通知我一下,那么他就没有被阻塞在这个等待的操作上面,自然这个就是异步+非阻塞的方式了。

    以上就是“Python中的同步异步阻塞与非阻塞是什么”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网Python频道。

    --结束END--

    本文标题: Python中的同步异步阻塞与非阻塞是什么

    本文链接: https://www.lsjlt.com/news/353927.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Python中的同步异步阻塞与非阻塞是什么
      今天小编给大家分享一下Python中的同步异步阻塞与非阻塞是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、状态介绍在...
      99+
      2023-07-05
    • 同步、异步与阻塞、非阻塞
      1. 同步与异步   同步和异步关注的是消息通信机制。同步就是在发出一个【调用】时,在没有拿到结果之前,该【调用】就不返回,但是一旦调用返回,就得到返回值了。   换句话说,就是由【调用者】主动等待这个【调用】的结果。     而异步正好...
      99+
      2023-01-31
    • 同步异步,阻塞非阻塞
      众所周知JavaScript的执行环境是单线程的,当有多任务时,先执行前面的任务再按顺序狮子那个后面一个,如果前面一个任务耗时很长,那么多所有任务都将拖延,比如经常遇到的浏览器无响应其实就是因为某一段JavaScript代码长时间运行(死循...
      99+
      2023-06-03
    • 一篇文章理解阻塞、非阻塞、同步、异步
      目录理解阻塞、非阻塞、同步、异步阻塞非阻塞同步异步总结理解阻塞、非阻塞、同步、异步 首先说明,这些都是在特点场景下或者相对情况的词汇,OK,接下来开门见山。 阻塞 可以很直观的理解,...
      99+
      2022-11-12
    • java 中同步、异步、阻塞和非阻塞区别详解
      java 中同步、异步、阻塞和非阻塞区别详解简单点说:阻塞就是干不完不准回来,一直处于等待中,直到事情处理完成才返回; 非阻塞就是你先干,我先看看有其他事没有,一发现事情被卡住,马上报告领导。我们拿最常用的send和recv两个函数来说吧....
      99+
      2023-05-31
      java 同步 异步
    • 对于同步、异步、阻塞、非阻塞的几点浅薄理
      首先我们先来看看: 一、同步与异步同步/异步, 它们是消息的通知机制(都是通过状态、通知、回调函数来返回结果)1. 概念解释    同步所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。 (按照这个定义,其实绝大多数...
      99+
      2023-01-30
      几点 浅薄
    • 什么是异步非阻塞redis
      异步非阻塞redis又叫异步IO,在IO多路复用模型中,事件循环将文件句柄的状态事件通知给用户线程,由用户线程自行读取数据、处理数据。而在异步IO模型中,当用户线程收到通知时,数据已被内核读取并存储于用户线程指定的缓冲区内,内核在IO完成后...
      99+
      2022-10-05
    • Nodejs中的非阻塞异步IO是什么
      这篇文章主要讲解了“Nodejs中的非阻塞异步IO是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Nodejs中的非阻塞异步IO是什么”吧!我们以网络请求IO为例,首先介绍服务端处理一次...
      99+
      2023-07-04
    • linux阻塞与非阻塞的概念是什么
      在Linux系统中,阻塞和非阻塞是指对于输入/输出(I/O)操作的处理方式。阻塞(Blocking)是指当程序发起一个I/O操作时,...
      99+
      2023-09-16
      linux
    • php程序阻塞与非阻塞的区别是什么
      本文操作环境:Windows10系统、PHP7.1版、Dell G3电脑。php程序阻塞与非阻塞的区别是什么阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态.阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结...
      99+
      2017-08-28
      php
    • 如何在python中实现异步非阻塞
      这篇文章给大家介绍如何在python中实现异步非阻塞,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、说明当一个异步过程调用发出后,调用者不会立刻得到结果。实际处理这个调用的部件是在调用发出后,通过状态、通知来通知调用...
      99+
      2023-06-15
    • 非阻塞同步怎么在Java中应用
      非阻塞同步怎么在Java中应用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、从硬件原语上理解同步(非特指Java)同步机制是多处理机系统的重要组成部分,其实现方式除了关系到...
      99+
      2023-06-15
    • Python异步之非阻塞流如何使用
      1. 异步流asyncio 的一个主要好处是能够使用非阻塞流。Asyncio 提供非阻塞 I/O 套接字编程。这是通过流提供的。可以打开提供对流写入器和流写入器的访问的套接字。在合适的时候,使用协同程序可以从流中写入和读取数据并暂停。完成后...
      99+
      2023-05-21
      Python
    • 带你了解Nodejs中的非阻塞异步IO
      以上就是带你了解Nodejs中的非阻塞异步IO的详细内容,更多请关注编程网其它相关文章!...
      99+
      2023-05-14
      I/O模型 node
    • Python 异步之非阻塞流使用示例详解
      目录1. 异步流2. 如何打开连接3. 如何启动服务器4. 如何使用 StreamWriter 写入数据5. 如何使用 StreamReader 读取数据6. 如何关闭连接1. 异步...
      99+
      2023-03-22
      Python 异步非阻塞流 Python 异步
    • 200行自定义python异步非阻塞Web框架
      Python的Web框架中Tornado以异步非阻塞而闻名。本篇将使用200行代码完成一个微型异步非阻塞Web框架:Snow。 一、源码 本文基于非阻塞的Socket以及IO多路复用从而实现异步非阻塞的We...
      99+
      2022-06-04
      自定义 框架 Web
    • Node.js的非阻塞I/O、异步与事件驱动介绍
      1、Node.js的单线程 非阻塞 I/O 事件驱动 在 Java、PHP 或者.net 等服务器端语言中,会为每一个客户端连接创建...
      99+
      2022-11-13
    • Node.js中非阻塞I/O是什么
      本篇文章为大家展示了Node.js中非阻塞I/O是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。先新建一个index.js,再打开我们前端人的vs-code,打...
      99+
      2022-10-19
    • Java异步非阻塞编程的方式有哪些
      这篇文章主要讲解了“Java异步非阻塞编程的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java异步非阻塞编程的方式有哪些”吧!1 服务端执行,最简单的同步调用方式:缺陷:服务端...
      99+
      2023-06-20
    • Java非阻塞IO和异步IO的详细介绍
      这篇文章主要讲解了“Java非阻塞IO和异步IO的详细介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java非阻塞IO和异步IO的详细介绍”吧!阻塞模式 IO我们已经介绍过使用 Java...
      99+
      2023-06-02
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作