多任务, 是操作系统的能力, 能同一时间内运行多个程序
更多关于多任务的概念, 请学习操作系统, 本节将以python演示多任务与单任务的区别 ( 实现多任务有多种方式, 这里是线程方式 )
单任务程序
一个简单的程序, 唱歌5秒, 跳舞5秒, 单任务状态下, 将会需要10秒
import time
def sing():
"""唱歌5秒"""
for i in range(5):
print("---正在唱歌---")
time.sleep(1)
def dance():
"""跳舞5秒"""
for i in range(5):
print("---正在跳舞---")
time.sleep(1)
def main():
sing()
dance()
if __name__ == '__main__':
main()
在上面这个程序中, 前面没讲过的,
- range() 函数, 可以指定循环次数
- time.sleep(n) ,程序( 线程 )暂停n秒
- 类, 方法的前后, 空2行, 否则pycharm会提示警告
多任务程序
以多任务执行上面的程序, “唱歌5秒”, “跳舞5秒”, 实际用时还是5秒
import threading
import time
def sing():
"""唱歌5秒"""
for i in range(5):
print("---正在唱歌---")
time.sleep(1)
def dance():
"""跳舞5秒"""
for i in range(5):
print("---正在跳舞---")
time.sleep(1)
def main():
t1 = threading.Thread(target=sing)
t2 = threading.Thread(target=dance)
t1.start()
t2.start()
if __name__ == '__main__':
main()
自行观察main函数中代码的区别, 但本节并不介绍多线程代码, 仅演示多任务与单任务区别.
ps: 这里区分一下, 并行与并发是不同概念, 并行是真正的多任务, 每个任务都单独占有一个cpu, 而并发是”假”的多任务, 多个任务同时占用一个cpu, 但只要时间片足够小, 用户体验出来像是在”同时运行”。并行是真的在同时执行, 并发是假的同时执行
ps: 在cpu中, 可以分为单核cpu和多核cpu, 多核其实是多个单核芯片焊接在一个芯片上, 也许是”多个cpu”念着怪异, 一直以来叫多核cpu