使用全局变量使用蟒蛇线程:事件VS全局变量
event = False
def wait_for_event_timeout(e, t):
time.sleep(5)
global event
event = True
if __name__ == '__main__':
t2 = threading.Thread(name='non-blocking',
target=wait_for_event_timeout,
args=(e, 1))
t2.start()
while True:
time.sleep(1)
if event:
logging.debug('got event')
break
else:
logging.debug('doing other things')
threading.event
def wait_for_event_timeout(e, t):
time.sleep(5)
e.set()
if __name__ == '__main__':
e = threading.Event()
t2 = threading.Thread(name='non-blocking',
target=wait_for_event_timeout,
args=(e, 1))
t2.start()
while True:
event_is_set = e.wait(1)
if event_is_set:
logging.debug('got event')
break
else:
logging.debug('doing other things')
看起来我可以使用全局变量做同样的
什么用情况事件?
我什么时候想使用它来使用全局变量?
我可以看到为什么如果等待时间很长,这可能会有用。虽然看起来很微不足道 – ealeon
你是对的。但是,请注意,使用全局变量方法,您需要找到“最佳位置”,其中您的响应性差异微乎其微,但CPU开销不会太高。使用一个事件(具有很高的或无限的等待时间),会自动给你这个。 –