day9-并发多线程效果演示
概述
我们说单核的cpu同时执行一个任务,但是给我们的一个感觉是它可以实现并发,因为cpu速度太快了。它是怎么实现的呢?就是上下文切换,它不是轮询着切换的。它是按照优先级来进行切换的,并不是从头到尾的,中间的切换是有优先级的。我们就可以利用这个优势,因为它的运算速度太快了,但是我们只打开了一个QQ,启动一个线程的话,他能得到执行的时间就是有限的。那cpu给我们的感觉同时执行多个任务,那我就可以并发批量操作某个动作。
并发多线程效果演示
import threading,time #定义每个线程要运行的函数 def run2(n): print("task",n) time.sleep(2) #生成一个线程实例 t1 = threading.Thread(target=run2,args=("t1",)) #args后面一个参数必须加逗号,要不然会把它当做一个参数,实际它是一个元组 #生成另一个线程实例 t2 = threading.Thread(target=run2,args=("t2",)) t1.start() #启动线程 t2.start() #启动另一个线程 print(t1.getName()) #获取线程名 print(t2.getName()) #运行输出 task t1 task t2 Thread-1 Thread-2 Process finished with exit code 0
解析:task t1和task t2同时执行,并同时显示结果,但是如果修改为直接调用执行,查看结果
run2("t1") #修改为直接运行 run2("t2") #运行输出 task t1 (隔2s后) task t2 Process finished with exit code 0
解析:在运行完t1后2s才显示t2的结果,现在可以看出,第一种情况是并发的效果。而第二种直接调用则是按顺序t1运行完隔2s再运行t2。