zoukankan      html  css  js  c++  java
  • Python 事件驱动与异步IO

    一、事件驱动编程是一种编程范式,这里程序的执行流由外部事件来决定。它的特点是包含一个事件循环,当外部事件发生时使用回调机制来出发相应的处理。另外两种常见的编程范式是(单线程)同步以及多线程编程。

      1、让我们用例子来比较和对比一下单线程、多线程以及事件驱动编程模型。下图展示了随着时间的推移,这三种模式下的程序所做的工作。这个程序有3个任务需要完成,每个任务都在等待IO操作时阻塞自身,阻塞在IO操作上所花费的时间已经用灰色框标示出来了。

        

      2、task1为单线程,task2为多线程(相当于用空间换时间),task3为协程(只能在单线程里实现多任务的异步)

      3、当我们面对如下的环境时,事件驱动模型通常是一个好的选择:

        a、程序中有许多任务

        b、任务之间高度独立,因此他们不需要互相通信,或者等待彼此。

        c、在等待事件到来时,某些任务会阻塞。

      4、当应用程序需要在任务间共享可变的数据时,这也是一个不错的选择,因为这里不需要采用同步处理。

      5、网络应用程序通常都有上述这些特点,这使得他们能够很好的契合事件驱动编程模型。

  • 相关阅读:
    879. 盈利计划 力扣 动态规划 难
    js 在浏览器中使用 monaco editor
    py 时间处理
    Xpath in JavaScript
    js 拖拽排序
    JavaScript如何获取网页的宽高,以及如何兼容(各种坑详解)
    JavaScript删除对象的某个属性的方法
    CSS渐变知识
    如何选定搭建个人独立博客工具
    Codeforces Round #714 (Div. 2) 题解(A-D)
  • 原文地址:https://www.cnblogs.com/Presley-lpc/p/10073769.html
Copyright © 2011-2022 走看看