新手入门Python核心笔记五:多线程、图形用户界面、web、数据库、扩展Python
日期: 2021-05-05 分类: 个人收藏 540次阅读
目录
第十八章多线程编程
Python 代码的执行由 Python 虚拟机(也叫解释器主循环)来控制。
虽然 Python 解释器中可以“运行”多个程序,但在任意时刻,只有一个线程在解释器中运行。与单个 CPU 的多线程原理是一样的。
对 Python 虚拟机的访问由全局解释器锁(GIL)来控制的,也正是这个锁保证了同一时刻只有一个线程在运行。
不建议使用 thread 模块,而推荐使用 threading 模块,原因:
- Thread 模块不支持守护进程。在主线程退出的时候,所有他其他线程没有被清除就退出了
- Threading 模块支持守护进程。能保证所有“重要的”子线程都退出后,进程才会结束
- Threading 模块更为先进,对线程的支持更为完善
- Thread 模块中的属性可能与 threading 出现冲突
- 低级别的 Thread 模块的同步原语只有一个,而Threading 则有很多
time.sleep(secs):睡眠多长时间,secs 单位秒(不是毫秒)
start_new_thread(function, args keargs=None) 产生一个新的线程,在新线程中用指定的参数和可选的 kwargs 来调用这个函数
Threading 的 Thread 类是我们主要的运行对象。它有很多 Thread 模块中没有的函数。
函数 | 描述 |
start() | 开始线程的执行 |
run() | 定义线程的功能的函数(一般会被子类重写) |
join(timeout=None) | 程序挂起直到线程结束;给了 timeout,则最多阻塞 timeout 秒 |
getName() | 返回线程的名字 |
setName(name) | 设置线程的名字 |
isAlive() | 布尔标志,标示这个线程是否还在运行中 |
isDaemon() | 返回线程的 daemon 标志 |
setDaemon(daemonic) | 把线程的 daemon 标志设为 daemonic(一定要在 start()前调用) |
注:thread.start()前调用 thread.setDaemon(True)表示这个线程“不重要”
精华推荐