Python的线程包含:
1. 线程标识:
- 每个线程都有一个唯一的TID(线程标识符)
- 可以使用threading.current_thread()获取当前线程标识符
2. 线程创建:
- 使用threading.Thread类创建线程
- 需要传入target函数和参数列表
- 语法:
python from threading import Thread def func(a, b): print(a, b) if __name__ == '__main__': t = Thread(target=func, args=(1, 2)) t.start() # 启动线程 |
3. 线程退出:
- 线程可以调用.exit()主动退出
- 当target函数执行完毕,线程也会退出
4. 线程名:
- 可以使用.name属性为线程命名
- 如果未设置默认为'Thread-N',N是序数
- 语法:t = Thread(name='mythread')
5. 守护线程:
- 可以使用.daemon属性设置线程为守护线程或用户线程
- 守护线程会在主线程退出后自动退出
- 用户线程会阻塞主线程退出直至自身退出
6. 线程同步:
- 可以使用Lock,Event,条件变量等实现线程间的同步
- 使用这些同步原语可以控制多个线程对共享数据的访问
7. threading模块:
- 包含创建线程的接口和多线程同步的方式
- 可以方便地使用多线程提高程序效率
示例:
python from threading import Thread, current_thread # 线程标识 print(current_thread().name) # 线程创建 def func(name): print(f'Hello from {name}') if __name__ == '__main__': t = Thread(target=func, args=('Bob',)) t.start() # 线程退出 t.exit() # 线程名和守护线程 t = Thread(name='mythread', daemon=True) # 线程同步 from threading import Lock lock = Lock() with lock: # do something... |
线程是操作系统的基本调度单位,理解线程的概念很重要。要会在Python中创建和管理线程,编写并发程序。
要会获取线程标识,设置线程名和守护线程属性。要熟悉线程同步的方式,使用锁、事件等控制线程对共享数据的访问。
线程的运用可以充分利用CPU的计算能力,实现并发执行,提高程序效率。要在项目中合理使用线程,编写高性能程序。
线程属于操作系统原语,要深入学习线程相关知识。threading模块的熟练运用属于Python高级技能,要不断练习。
多线程编程同时也要注意各种问题,如死锁、数据竞争等,编写正确的程序。线程协同是技术提高的必经阶段,要付出较长时间精进和总结。