gpt4 book ai didi

python - 工作单元由外部事件驱动。如何确保一个单元仅在前一个单元结束后才启动?

转载 作者:太空宇宙 更新时间:2023-11-03 18:58:36 24 4
gpt4 key购买 nike

我不知道如何重构我的应用程序。我读过一些有关 ChainedDefered 的内容,但我不知道如何将该技术应用于我的情况。欢迎任何指示/建议。

我正在使用第三方库来监视一些实时变化非常快的外部数据源。每当检测到更改时,库就会调用我的代码中的回调函数。我的回调函数将从数据库中检索数据并执行一些处理。

class MyApp(object):
def start(self):
for i in range(1, 1000):
mycallback = CallBackHandler(x, y, z)
thirdPartyLib.subscribe(event_name + str(i), mycallback)

reactor.start()


class CallBackHandler(object):
def __init__(self, x, y, z):
....

def getSomeDataAndDoSomething(self):
...

def __call__(self)
callLater(self.getSomeDataAndDoSomething)

问题在于,当事件在很短的时间间隔内快速发生时,CallBackHandler 可能会被连续调用多次。如果这些回调或多或少同时执行,它们将产生相同的结果。

当最后一个回调已完成处理时,如何触发回调?我更喜欢使用扭曲中提供的构造来实现它,而不是通过比较事件的时间戳(因此如果回调在 1 秒前被触发,则将其删除)或全局变量作为标志。

最佳答案

以后请include complete code samples .

如果您想执行延迟的操作 - 以有限的并发级别返回,Twisted 包含一个名为 DeferredSemaphore 的类。您可以使用。

2006 年,Jean-Paul Calderone 写了一篇伟大的文章 blog post about how to limit parallelism with it .

关于python - 工作单元由外部事件驱动。如何确保一个单元仅在前一个单元结束后才启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16643140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com