如何从回调中向调用gen生成一个值

2024-09-30 20:28:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在python 2.6中定义如下生成器:

def getGenerator(self, keyIterator):
    def bufferFullCallback(list_of_keys):
        some_values = api_call(list_of_keys)
        for value in some_values:
            yield value # I want this value to be yielded by getGenerator
    for key in keyIterator:
        with MyBuffer(self.buffer_size, bufferFullCallback) as buf:
            buf.addToBuffer(key)

在这里,当缓冲区已满时,我会得到一个回调,其中我进行一些API调用以获得与键对应的一组值。现在,我需要'getGenerator'来生成它在回调函数中接收到的这些值。但是,如果我在回调中生成值,则该回调实际上会变成生成器;这显然是错误的方法。您能否建议在这里从回调中产生值的正确方法,或者甚至是一种可能有帮助的不同重构方法?在


Tags: of方法keyinselfforvaluedef
1条回答
网友
1楼 · 发布于 2024-09-30 20:28:01

像这样:

def getGenerator(self, keyIterator):
    results = []
    def bufferFullCallback(list_of_keys):
        results.extend(api_call(list_of_keys))
    for key in keyIterator:
        with MyBuffer(self.buffer_size, bufferFullCallback) as buf:
            buf.addToBuffer(key)
            for value in results:
                yield value

相关问题 更多 >