同步和异步
-
举个例子来说,你去商场买手机的时候正好口渴了。
-
同步的意思就是说,你和店员说你看上这部手机了,然后店员去仓库拿货,你在店里等待店员回来后再去买水喝。
-
异步的意思就是说,你在店员去仓库拿货的时候,你去买水喝,喝完水后,刚好店员也带着手机回来了。
-
-
使用方法的调用来举例:
注意:同步和异步针对是cup遇到阻塞操作时,所产生的不同行为!
注意
- 异步可以是基于并行的也可以是基于并发的,但是大部分情况下是基于并发的。
- 基于并发是指,在方法调用开始的时候,启动另一个进程/线程执行方法后序的操作,而当前的进程/线程执行该方法内部的操作。则当前进程/线程和启动的另一个新的进程/线程是基于cpu的调度算法,调度执行的。
- 基于并行是指,在多核情况下,如果应用程序执行过程中设计到的计算量特别大,则相关的运算操作启动的进程/线程会在另一个cup中启动,这样可以实现真正的并行。
比如下面py文件:
import time
def get_request(url):
print('正在请求网址的数据:',url)
time.sleep(2)
print('请求结束:',url)
if __name__ == "__main__":
start = time.time()
urls = ['www.baidu.com','www.jd.com','www.taobao.com']
for url in urls:
get_request(url)
print('总耗时:',time.time()-start)
可以看出上面是一个同步进程,使用了6秒.
import time
from multiprocessing import Process
def get_request(url):
print('正在请求网址的数据:',url)
time.sleep(2)
print('请求结束:',url)
if __name__ == "__main__":
urls = ['www.baidu.com','www.jd.com','www.taobao.com']
for url in urls:
#创建了三个进程,同时执行三个任务
p = Process(target=get_request,args=(url,))
p.start()
可以看到,异步还是非常快的.