多任务、并发和并行

2018-04-24  本文已影响0人  furuiyang

多任务

现实生活中的多任务

有很多的场景中的事情是同时进行的,比如开车的时候 手和脚共同来驾驶汽车,再比如唱歌跳舞也是同时进行的;在线听歌(边下载边听歌);老师边讲边操作等等。

使用程序模拟在线听歌

需求:如标题

import time

def download_music():
    '''模拟下载歌曲 需要5秒钟下载完成'''
    for i in range(5):
        time.sleep(1)
        print('正在下载歌曲%d' %(i+1))

def play_music():
    '''迷你歌曲的播放,需要5秒钟完成'''
    for i in range(5):
        time.sleep(1)
        print('正在播放歌曲%d'%(i+1))

def main():
    download_music()
    play_music()

if __name__ == '__main__':
    main()

运行结果

77.png

分析

很显然刚刚的程序并没有完成下载歌曲和播放歌曲同时进行的要求
如果想要实现“下载与播放”同时进行,那么就需要使用一个新知识,叫做:多任务

多任务

什么叫多任务

什么叫“多任务”呢?简单地说,就是操作系统可以同时运行多个任务。打个比方,你一边在用浏览器上网,一边在听MP3,一边在用Word赶作业,这就是多任务,至少同时有3个任务正在运行。还有很多任务悄悄地在后台同时运行着,只是桌面上没有显示而已。

单核cpu如何执行多任务

现在,多核CPU已经非常普及了,但是,即使过去的单核CPU,也可以执行多任务。由于CPU执行代码都是顺序执行的,那么,单核CPU是怎么执行多任务的呢?
答案就是操作系统轮流让各个任务交替执行,任务1执行0.01秒,切换到任务2,任务2执行0.01秒,再切换到任务3,执行0.01秒……这样反复执行下去。表面上看,每个任务都是交替执行的,但是,由于CPU的执行速度实在是太快了,我们感觉就像所有任务都在同时执行一样。
真正的并行执行多任务只能在多核CPU上实现,但是,由于任务数量远远多于CPU的核心数量,所以,操作系统也会自动把很多任务轮流调度到每个核心上执行。

并发和并行

并发:指的是任务数多于cpu核数,通过操作系统的各种任务调度算法,实现用多个任务“一起”执行(实际上总有一些任务不在执行,因为切换任务的速度相当快,看上去一起执行而已)。
并行:指的是任务数小于等于cpu核数,即任务真的是一起执行的。

一张并发和并行的解释漫画

并发与并行漫画.jpg 并行与并发任务解释图.png
上一篇 下一篇

猜你喜欢

热点阅读