摘要:
1. 事件 其实就是一种标志,事件默认阻塞状态,阻塞状态下执行e.wait()就会一直陷入阻塞状态(但是e.wait(10)就是设置在阻塞状态下 e.is_set()=False时只阻塞10秒就结束) ; e.set() 设置非阻塞状态,此时e.is_set()=True 并且执行e.wait()不 阅读全文
摘要:
1. 信号量 信号量本质上还是锁,只不过这个锁有很多把钥匙,同一时间只允许有限个线程进程操作(实现有限个数据的并发),但是线程数开了很多个的(信号量的参数不是开的线程数。只是代表同一时间允许并发的线程数) 运行结果: 信号量与线程池的异同点: 相同:在信号量的acquire之后,同一时间只能有有限个 阅读全文
摘要:
1. 守护线程 设置子线程为守护线程,则守护线程的代码会等待主线程代码执行完毕而结束: 运行结果: 再来看一个例子: 运行结果: 2. GIL全局解释器锁 只是锁线程,并不能真正保证数据安全 GIL只是在线程上加锁,可以保证同一时间只能有一个线程操作数据,但是并没有直接对数据加锁,所以对某些特殊情况 阅读全文