0

可能重复:
在 Python 中重置生成器对象

我在 python 中经常遇到以下问题:我有一个生成器,我在多次调用中使用它来计算不同的值,如下所示:

mygenerator = generate_data()
value1 = compute1(mygenerator)
value2 = compute2(mygenerator)

问题是,当然,compute2 将找不到数据,因为生成器已被消耗。所以我被迫“列出”生成器:

mygenerator = generate_data()
mylist = listize_generator(mygenerator)
value1 = compute1(mylist)
value2 = compute2(mylist)

有没有另一种方法来解决这个问题?

4

1 回答 1

0

您需要协同例程将生成器输出发送给多个消费者。

例如http://www.dabeaz.com/coroutines/cobroadcast.py

我建议阅读所有http://www.dabeaz.com/coroutines/,因为它是一个很好的介绍。

于 2012-10-17T11:21:37.590 回答