Python 多任务(线程) day1
多任务就是可以让一台电脑同时执行多个命令。
以前的单核cpu是怎么做到同时执行多个命令的?(时间片轮转)
——其实以前的单核CPU是让操作系统交替执行命令,每个任务执行0.01秒,这样看起来就像是在同时执行多个命令。就跟手翻动画一样。
并行:真的多任务
并发:假的多任务
线程
- 一个程序运行,一定有一个执行代码的东西,这个东西称作 《线程》
就像光标一行一行的往下移动,执行每一行代码
多个线程,就会出现多个光标,分为主线程和子线程 - 当主线程执行完所有代码,就要等子线程,当子线程执行完,主线程才能结束。(帮子线程处理垃圾)
只有主线程结束,程序才结束。不是程序结束,主线程才结束。 - t1 = threading.Thread(target = sing) 应该把函数名sing给target,不能用sing(),sing()表示调用函数
t1.start() 表示创建子线程,
threading.enumerate() 用来获取当前所有的线程,与以前的用法不同
线程的运行是没有先后顺序的,如果子线程没有延时,很快就执行完,那么当你调用时,获得的列表只有主线程 - 在创建对象时 线程没有创建
当调用 xx.start() 时线程才创建并开始执行
当调用的方法比较复杂时,可以把他封装成类,start会自动调用run方法,然后在run里面调用类里面的其他方法
xx.start()只创建了一个线程,执行 run() 如果里面有其他方法,在run()调用