同步异步阻塞非阻塞区别

同步和异步

  • 定义:描述的是程序的提交方式(消息的通信机制)
  • 区别:
    • 同步:任务提交之后,原地等待任务的返回结果,等待的过程中不做任何事,也就是等待结果之后才能继续往后执行
    • 异步:任务提交之后,不再等待任务,继续完成其他的任务,等待任务的返回结果后,任务的返回结果会有异步回调函数来提醒调用者
    def func()
    time.sleep(3)
    print("任务已提交")
    
    res = func() #同步执行
    print("执行")
    
    在上面的代码中我们可以看到,程序运行时会先调用函数,在函数执行完毕之后,再去执行下面的代码,结果应该是3秒之后再执行print代码,如果是异步执行,调用之后,直接就执行print代码

阻塞和非阻塞

  • 定义:程序在等待调用结果(消息,返回值)时的状态
  • 区别:
    • 阻塞:调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回

    • 非阻塞:在不能立刻得到结果之前,该调用不会阻塞当前线程。

假如一个公司去招聘,我去面试,面试官让我回家等结果,会发生以下几种状况
同步和异步在于我,阻塞和非阻塞在于面试官
1.同步阻塞:我在公司通道等待面试官结果,不告诉结果的时候我不能干别的事,我面试官也不能进行其他面试
2.同步非阻塞:我在公司等消息,不告诉我结果,面试官也可以告诉我消息
3.异步阻塞:我在公司通道玩手机,睡觉,吃饭,但是面试官不能进行其他面试
4.异步非阻塞:我在家玩手机,睡觉,吃饭,等面试官电话通知,面试官可以进行

你可能感兴趣的:(Python进阶,多线程,并发编程)