【发布时间】:2020-12-10 09:55:29
【问题描述】:
我正在尝试在 python 中复制 ES6 事件行为,所以我编写了以下代码:
from threading import Thread
from time import sleep
class Event:
def __init__(self, action):
self.action= action
self.flag = False
self.__watchFlag()
def triggerAction(self):
self.flag = True
def __watchFlag(self):
if self.flag:
self.action()
self.flag = False
Thread(target=self.__watchFlag).start()
def action():
print("Event triggered action.")
my_event = Event(action)
my_event.triggerAction()
当我尝试连续两次触发动作时,除了效果很好,即:
my_event.triggerAction()
my_event.triggerAction()
只触发了 1 个事件,但如果我在每个触发器之间添加一个 sleep(1/10),效果很好。所以我假设这个过程中的某个地方有延迟,有什么想法吗?
注意:请不要推荐 Python 中已经存在的任何事件库,我知道,这不是我的最终目标,谢谢。
【问题讨论】:
标签: python python-3.x multithreading events concurrency