编程语言
首页 > 编程语言> > python – 如何立即运行生成器函数的初始化代码,而不是在第一次调用时?

python – 如何立即运行生成器函数的初始化代码,而不是在第一次调用时?

作者:互联网

我有一个生成器函数,如下所示:

def mygenerator():
    next_value = compute_first_value() # Costly operation
    while next_value != terminating_value:
        yield next_value
        next_value = compute_next_value()

我希望初始化步骤(在while循环之前)在调用函数时立即运行,而不是仅在首次使用生成器时运行.有什么好办法呢?

我想这样做,因为生成器将在一个单独的线程(或进程,或任何多处理使用)中运行,我将不会在短时间内使用返回,并且初始化有点昂贵,所以我希望它我正准备使用这些值时进行初始化.

解决方法:

class mygenerator(object):
    def __init__(self):
        next_value = compute_first_value()
    def __iter__(self):
        return self
    def next(self):
        if next_value == terminating_value:
            raise StopIteration()
        return next_value

标签:python,generator,multiprocessing,eager
来源: https://codeday.me/bug/20191005/1857232.html