• Python 事件驱动与异步IO


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

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

        

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

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

        a、程序中有许多任务

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

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

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

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

  • 相关阅读:
    Apache commons-net用法的一个示例
    Apache commons(Java常用工具包)简介
    MyBatis动态sql之${}和#{}区别
    Spring事务管理
    Spring:源码解读Spring IOC原理
    Spring常用注解总结
    maven常用命令
    Spring事务回滚和异常类
    CSS3--难以想象的滤镜效果
    Composer安装
  • 原文地址:https://www.cnblogs.com/Presley-lpc/p/10073769.html
Copyright © 2020-2023  润新知