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