Python线程操作
一、全局锁
1、在Python中,Python代码的执行由Python虚拟机来控制,而在Python虚拟机中,同一时刻只有一个线程在执行,就像单CPU的系统中运行多个进程那样,内存中可以存放多个程序,但在任意时刻,只有一个程序在CPU中运行。同样的,在Python解释器中可以“运行”多个线程,但在任意时刻,只有一个线程在Python解释器中运行。
2、对Python虚拟机的访问由全局解释器锁【GIL】来控制,正是这个锁能保证同一时刻只有一个线程在运行。
3、多线程环境中,Python虚拟机的执行方式为:
二、线程模块
Python提供了【thread】和【threading】模块。在多线程编程中,建议使用【threading】模块,这是因为:
1、在【thread】模块中,当主线程退出时,其他没有被清除的线程没有运行结束就会被退出。但在【threading】模块中能确保所有的“重要的”子线程(这里的重要的子线程指的是守护线程)运行结束后,进程才会结束
2、在【threading】模块是更高级的线程模块,它不仅提供了Thread类,还提供了线程同步机制
thread模块
内建函数