多任务的概念
Python实现多任务
- 主线程加sleep是因为主线程如果结束子线程都会结束
thread多线程注意点
- 主线程结束, 子线程也结束
- 子线程可以调用thread.exit_thread()来结束本线程和主线程
多线程threading
- threading创建的线程不需要主线程结束之后子线程也可以运行
len(threading.enumerate()) 检测有多少个线程
一个线程执行一个函数
多个线程执行同一个函数
后面线程数只有1是因为子线程都运行结束了所以只剩下一个主线程
threading注意点
- 用类进行封装
thread和threading的几个问题
线程的执行顺序
线程总结
多线程开发可能遇到的问题
线程同步
互斥锁
互斥锁同步
acquire() 有个参数默认为true表示上锁, 如果设置为false则无法上锁
运行结果
acquire(false)
上锁和解锁过程
互斥锁的好处和坏处
非共享数据不需要同步
只要是全局变量则线程是共享数据的
如果是函数内部变量那么各个线程的数据是互相独立的
运行结果
- 多线程对函数内局部变量的影响
第二行在第一行打印5秒钟之后才打印
死锁
光标一直在闪动, 卡主