仅在某个时间范围内运行最后一个python函数调用?

问题描述 投票:0回答:1

假设我有一个更新应用程序某些内部状态的函数:

def on_change(*args, **kwargs):
    pass  # some compute intensive state change

[此功能每秒可运行多达一百次(由于许多鼠标滚轮事件触发了更新)-我只想执行一次以上功能,并且只应执行最后一次调用。

解决这种情况的最佳设计模式是什么?我能想到的唯一方法是为每个on_change调用生成一个单独的线程并在它们之间共享一个变量,但这听起来太混乱了……

谢谢!

python multithreading python-asyncio coroutine
1个回答
0
投票
class Waiter: def __init__(self): self.args = () self.kwargs = {} self.changed = False def on_change(self, *args, **kwargs): # This is the event handler # It does nothing but save the latest arguments self.args = args self.kwargs = kwargs self.changed = True def tick(self): # Call this function once per second, or whatever if self.changed: # Do your updates, using self.args and self.kwargs self.changed = False
由于您提到了鼠标事件,所以您显然在编写GUI应用程序。以我的经验,所有GUI引擎都具有计时器,并具有定期调用函数的能力。使用该功能来定期呼叫滴答声。
© www.soinside.com 2019 - 2024. All rights reserved.