Python多任务【并行/并发】

1.什么是“多任务”呢?

    简单地说,就是操作系统可以同时执行多个任务

    在代码里面,就是一个程序有多个地方同时执行

    打个比方,你一边用着这浏览器上网,一边在听MP3,一边在用Word赶作业,这就是多任务

2.单核CPU是怎么解决多任务的?

   单核:意味着同一时刻只能执行一件事情

   操作系统轮流让各任务交替执行,任务1执行0.01秒,切换到任务2,任务2执行0.01,再切换到任务3,

    执行0.01秒。。。。。这样反复的执行下去,每个任务都是交替执行的,但是由于CPU的执行速度实在是太快了,
    我们感觉就像是所有任务都在同时执行一样,这就是所谓的 “时间片轮转”  。

3. 并行和并发

    并行: 真的多任务     (CPU的核数大于任务数量)

     并发:  假的多任务     (CPU的核数小于任务数量)

   真正的并行执行多任务只能在多核CPU上实现,但是,由于任务数量远远多于CPU的核心数量,所以,操作系统也会自动      把很多任务轮流调度到每个核心上执行。

 单任务:

import time
import threading
def dance():
    for i in range(5):
        print("---dancing---")
        time.sleep(1)
def sing():
    for i in range(5):
        print("---singing---")
        time.sleep(1)
def main():
    print(time.ctime())
    dance()
    sing()
    print(time.ctime())
if __name__ == '__main__':
    main()

 运行的结果为:      先把dance执行完花费5秒钟,  再花费5秒钟执行完sing,  一共花费10秒钟

多任务:

 

import time
import threading
def dance():
    for i in range(5):
        print("---dancing---")
        time.sleep(1)
        print(time.ctime())
def sing():
    for i in range(5):
        print("---singing---")
        time.sleep(1)
        print(time.ctime())
def main():
    t1 = threading.Thread(target = dance)
    t2 = threading.Thread(target = sing)
    t1.start()
    t2.start()
if __name__ == '__main__':
    main()
    

  运行的结果为:     两个任务同步执行,每次花费1秒,共花费5秒,从下图的测试时间可以看出两个任务是同步执行的。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章