【发布时间】:2018-08-16 20:59:01
【问题描述】:
我四处寻找,但没有找到类似的东西。假设我有一大群线程,它们不断读取和更新整数变量x。当x 变化超过一定的余量(比如说500)时,我想要一个回调来运行回调。
如何在不给系统带来沉重负担的情况下做到这一点,例如拥有一个具有while true 的线程并检查变量是否已更改?性能至关重要。但道德也是如此。
在纯代码中会是这样的:
x = 10
def runMe():
print('Its greater than 500!!')
def whenToRun():
return x >= 500
triggers.event(runMe, whenToRun)
【问题讨论】:
-
x必须是全局变量,还是可以是某个对象的属性? -
您可以将变量“隐藏”在负责通知观察者的设置器后面,或者(如果这根本不可行),您可以选择次优选项,即拥有一个线程不断检查变量中的值。
-
x将是某个对象的属性 -
@AndrasDeak 好吧,你可以做到。一种方法是通过调试器挂钩,这可能太慢了。或者,您可以使用
__setitem__-hooked 容器作为模块 dict,以一种 hacky 方式,或者使用一个不错的导入钩子,为所有.py文件提供您的自定义 dict 子类。也许还有其他方式。
标签: python events concurrency