【问题标题】:Listize a generator in python [duplicate]在python中列出一个生成器[重复]
【发布时间】:2012-10-07 15:10:16
【问题描述】:

可能重复:
Reseting generator object in 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)

还有其他方法可以解决这个问题吗?

【问题讨论】:

  • listize_generator 是做什么的?你能直接调用:mylist = list(mygenerator)吗?
  • 确实如此。这个问题还有其他解决方案吗?拥有生成数据的列表可能会占用大量内存。

标签: python generator


【解决方案1】:

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

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

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

【讨论】:

猜你喜欢
  • 2018-06-22
  • 2022-01-18
  • 2015-01-16
  • 1970-01-01
  • 1970-01-01
  • 2020-07-09
  • 2012-05-19
  • 1970-01-01
  • 2014-01-06
相关资源
最近更新 更多