线程
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是隔离的,其他线程无法访问