参考博客:
https://www.cnblogs.com/zhangshengxiang/p/9606133.html (讲述了event和线程之间的关系)
https://blog.csdn.net/beifangdefengchuilai/article/details/80165772 (使用event实现红绿灯)
https://www.jianshu.com/p/c8dc6f689915 (使用event实现生产者消费者)
event与线程之间的关系:
同进程的一样,线程的一个关键特性是每个线程都是独立运行且状态不可预测。如果程序中的其 他线程需要通过判断某个线程的状态来确定自己下一步的操作,这时线程同步问题就会变得非常棘手。为了解决这些问题,我们需要使用threading库中的Event对象。 对象包含一个可由线程设置的信号标志,它允许线程等待某些事件的发生。在 初始情况下,Event对象中的信号标志被设置为假。如果有线程等待一个Event对象, 而这个Event对象的标志为假,那么这个线程将会被一直阻塞直至该标志为真。一个线程如果将一个Event对象的信号标志设置为真,它将唤醒所有等待这个Event对象的线程。如果一个线程等待一个已经被设置为真的Event对象,那么它将忽略这个事件, 继续执行。
event的方法:
is_set()
当且仅当内部标志为True