【python web开发知识点整理9】-线程

线程

1.GIL锁是什么回事?

global interpreter lock全局解释其所,Cpython中,对解释器加的一把锁,导致同一时刻同一进程中只有一个线程能够访问cpu,GIL锁的出现,保证了多线程对共享数据的大部分操作,也就是类原子操作时的数据安全。但是无法避免所有修改共享数据的安全。

2.在python中是否线程安全?

不是,在Cpython解释器中,代码都会转换成机器码,即时有了GIL锁的限制,多线程对数据的非原子性修改操作,也会因为操作系统的对cpu时间片轮转而导致对数据修改的不安全。

3…什么叫做死锁?

多道操作系统中,是指多个进程或线程在执行过程中,因争夺资源而造成的一种互相等待的僵局现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程/线程。

4、logging模块是否是线程安全的?

是,因为logging模块的写入是追加写

5.threading.local的作用?

创建全局ThreadLocal对象:
localVal = threading.local()
localVal.val = “Main-Thread” # 为全局线程对象赋值
用来保存一个全局变量,只能在当前前线程中才能访问

不同线程对其赋值,不会覆盖,而会在自己的线程单独创建控件来存储这个变量

不同线程的前程变量local.val是隔离的,其他线程无法访问

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章