python多任务的理解与实现。

1.多任务的理解
生活中与很多场景是同时进行的,比如开车的时候手和脚是同时来控制车。还有一些歌手边唱歌边跳舞。
我们可以理解为我们的大脑控制着我们的身体进行不同的动作。大脑就是cpu,身体的所有支配动作用到的部位为我们的资源。
试想下如果我们的大脑只能控制一个动作完成后才能控制下一个动作,也就是说我们只能先唱完歌在去跳舞,这是不是很尴尬呢?

下面模拟一下唱歌跳舞

def sing():
    for i in range(3):
        print('我正在唱歌。。。%d'%i)
        sleep(1)

def dance():
    for i in range(3):
        print('我正在跳舞。。。%d'%i)
        sleep(1)
if __name__ == '__main__':
    sing() # 先唱歌
    dance() # 在跳舞

结果如下:

是不是很尴尬呢。。

2.多任务的概念

多任务就是操作系统执行多个任务,比如电脑可以同时开qq,微信,等等,而且qq还可以同时开多个聊天界面。但是注意的是cpu的核数是有限的,所以当任务数大于核数的时候其实所执行的多任务是一个假象其实是操作系统轮流让各个任务交替执行,由于cpu的执行速度很快所以让人感觉就是在同时进行。这里引出两个概念并发与并行。

并发:任务数大于cpu核数,通过操作系统的调度算法实现假象多任务

并行:任务数小与cpu核数,实现正真的多任务一起执行。

单线程执行
def saySorry():
    print("亲爱的,圣诞节快乐!")
    time.sleep(1)

if __name__ == "__main__":
    for i in range(5):
        saySorry()
多线程执行
import time
def saySorry():
    print("亲爱的,圣诞节快乐!")
    time.sleep(1)

if __name__ == "__main__":
    for i in range(5):
        t = threading.Thread(target=saySorry)
        t.start() #启动线程,即让线程开始执行
执行唱歌跳舞的多任务。
import threading
from time import sleep,ctime

def sing():
    for i in range(3):
        print("正在唱歌...%d"%i)
        sleep(1)

def dance():
    for i in range(3):
        print("正在跳舞...%d"%i)
        sleep(1)

if __name__ == '__main__':
    print('---开始---:%s'%ctime())

    t1 = threading.Thread(target=sing)
    t2 = threading.Thread(target=dance)

    t1.start()
    t2.start()

    #sleep(5) # 屏蔽此行代码,试试看,程序是否会立马结束?
    print('---结束---:%s'%ctime())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值