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。

posted @ 2017-10-26 21:36  Mr.hu  阅读(107)  评论(0编辑  收藏  举报