单核CPU:同一时刻,只处理一件事情
单核CPU执行多任务:时间片轮转(优先级调度)
并发
操作系统轮流让各个任务交替执行,由于CPU的执行速度很快,实现了一种假的多任务
并行
真正的并行执行多任务只能在多核CPU上实现,但是,由于任务数量远远多于CPU的核心数量,所以,操作系统也会自动把很多任务轮流调度到每个核心上执行。
python threading模块实现多线程
import threading
import time
# 一个主线程,两个子线程
# 主线程会等待所有子线程结束,才会结束
def fun1():
print("任务一正在执行")
sleep(1)
def func2():
print("任务二正在执行")
sleep(1)
if __name__ == "__main__":
t1 = threading.Thread(target = func1)
t2 = threading.Thread(target = func2)
t1.start()
t2.start()
print("主线程正在执行")
# threading.enumerate()获取当前程序所有的线程
length = len(threading.enumerate())
构建一个类,对线程进行封装
import threading
import time
# 必须继承threading.Thread
# 必须定义run方法(相当于重写threading.Thread中的run)
# start方法继承自threading.Thread,调用start会自动调用run,run结束,线程结束
class MyThread(threading.Thread):
def run(self):
for i in range(3):
time.sleep(1)
msg = "I'm" + self.name + '@' + str(i) #self
print(msg)
if __name__ == "__main__":
t = Mythread();
t.start()