美文网首页
同步与异步

同步与异步

作者: MononokeHime | 来源:发表于2018-09-05 13:54 被阅读0次

同步与异步

同步与异步的重点在消息通知的方式上,也就是调用结果通知的方式。 同步: 当一个同步调用发出去后,调用者要一直等待调用结果的通知后,才能进行后续的执行。 异步:当一个异步调用发出去后,调用者不能立即得到调用结果的返回。 异步调用,要想获得结果,一般有两种方式:

  1. 主动轮询异步调用的结果;
  1. 被调用方通过callback来通知调用方调用结果。

阻塞与非阻塞

阻塞与非阻塞的重点在于进/线程等待消息时候的行为,也就是在等待消息的时候,当前进/线程是挂起状态,还是非挂起状态。

阻塞调用在发出去后,在消息返回之前,当前进/线程会被挂起,直到有消息返回,当前进/线程才会被激活.

非阻塞调用在发出去后,不会阻塞当前进/线程,而会立即返回。

总结

通过上面的分析,我们可以得知:

  1. 同步与异步,重点在于消息通知的方式;
  1. 阻塞与非阻塞,重点在于等消息时候的行为。

自定义异步操作

对于耗时的操作,会交给别人(另一个线程)去处理,我们继续向下执行,当耗时操作完成后再将结果返回给我们。异步的实现方式:

  • 回调函数实现异步
  • 将耗时任务丢给第三方处理(celery)
  • 协程实现异步

什么是 callback 函数

回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数。而那个函数在需要的时候,利用传递的地址调用回调函数,这时你可以利用这个机会在回调函数中处理消息或完成一定的操作。

image.png

在IO下模拟利用回调函数处理异步任务

import time
import threading

def longIO(callback=None):
    def run(cb):
        print("开始耗时操作")
        time.sleep(5)
        print("结束耗时操作")
        cb("从数据库查出结果为100")
    threading.Thread(target=run,args=(callback,)).start()

# 回调函数
def finish(data):
    print('开始处理回调函数')
    print('接收到longIO的响应数据:',data)
    print('结束处理回调函数')

def reqA():
    print("开始处理A请求")
    longIO(callback=finish)
    print("结束处理A请求")

def reqB():
    print("开始处理B请求")
    print("结束处理B请求")

if __name__ == '__main__':
    reqA()
    reqB()

相关文章

  • UNIX 的5种IO模型介绍

    IO模型同步、异步、阻塞、非阻塞socket阻塞与非阻塞,同步与异步 同步和异步 同步/异步主要针对C端-同步就像...

  • 简单理解异步,非阻塞和 IO 复用

    1.1 同步与异步 同步与异步的理解 同步与异步的重点在消息通知的方式上,也就是调用结果通知的方式。同步: 当一个...

  • clk分类与介绍

    1、同步电路与异步电路 首先来谈谈同步电路与异步电路。那么首先就要知道什么是同步电路、什么是异步电路? 对于同步时...

  • 高并发原理研究和探索

    详细了解同步与异步,阻塞与非阻塞。 1、同步与异步 同步与异步的重点在消息通知的方式上,也就是调用结果通知的方式。...

  • NIO基础之同步、异步、阻塞、非阻塞

    这里区分几个概念,也是常见但是容易混淆的概念,就是标题中的同步、异步、阻塞、非阻塞。 一、同步与异步 同步与异步,...

  • 多线程处理(问题使用方法)

    一、同步与异步、串行与并发: 首先我们要明白:什么是同步、异步?什么是并发、串行?同步、异步是提交任务的一种方式,...

  • 侃侃高并发的实现原理

    为了更加形象的说明同步异步、阻塞非阻塞,我们以实物买奶茶来说明为例。 并发处理的前身 一:同步与异步 ①同步与异步...

  • 📕 史上最实用的JS笔记

    1. 同步与异步 同步和异步的区别是什么?分别举一个同步和异步的例子 同步会阻塞代码执行,而异步不会阻塞代码执行。...

  • 异步编程

    同步与异步 同步:按代码顺序依次执行 异步:先执行同步代码,完成后再执行异步代码 事件循环与消息队列:当代码执行到...

  • 同步、异步、阻塞与非阻塞

    同步与异步 首先来解释同步和异步的概念,这两个概念与消息的通知机制有关。也就是同步与异步主要是从消息通知机制角度来...

网友评论

      本文标题:同步与异步

      本文链接:https://www.haomeiwen.com/subject/ourmwftx.html