python 线程

# 线程
    # 守护线程
        # 在主线程结束(包括所有的子线程)之后守护线程才结束
    # 面向对象开启线程
        # 原本写在func中的代码挪到run方法中
    # 同步的机制
        #
            # GIL锁  是全局解释器锁 线程没有并行
                # 是Cpython解释器的
                # 在开发python解释器的时候可以减少很多细粒度的锁
            # 为什么有了GIL锁还会产生数据安全问题呢?
                # 因为GIL锁得是线程 而不是具体的内存
            # 互斥锁 不能连续acquire两次
            # 递归锁 可以在用一个线程/进程中被acquire多次
            # 死锁 : 是一种现象,而不是一个工具
                # 为什么产生死锁 : 代码的逻辑有问题
                # 如何解决死锁 :
                    # 如果在服务阶段 -> 递归锁 ->排查逻辑 -> 互斥锁
                    # 如果在测试阶段 -> ->排查逻辑 -> 互斥锁
        # 信号量  锁+计数器
            # 和池的区别 : 信号量是有几个任务起几个进程/线程 池是固定的线程/进程数,不限量的任务
            # 现象 : 信号量慢 且耗资源 池快
        # 事件 Event wait set clear is_set
        # 条件 condition wait notify acquire release
        # 定时器 Timer
# join  同步控制 用来获取结果
# 锁    数据安全
# 池    提高效率,解决并发
原文地址:https://www.cnblogs.com/ltk-python/p/9395801.html