【问题标题】:How to get the number if items in a generator in python? [duplicate]如果python中的生成器中的项目如何获取数字? [复制]
【发布时间】:2018-09-12 20:02:29
【问题描述】:

我在 python 2.7 中有一个大的(这次可能是 22^56 个左右的项目)生成器。我想知道生成器中有多少项目,以便我可以估计完成任务的时间。不幸的是,当我尝试列表理解的 len() 时,它杀死了整个 python 实例......

>>> len([i for i in giant_word_list_generator])
Killed: 9
[user@host:~/Documents/work/bin|16:59:28]
$ 

如何估计生成器中的项目数以进行进度估计?我可以估计到最接近的 0.25 数量级(例如 250,000,000 或 50,000)

【问题讨论】:

  • 这是不可能的,因为你可以拥有无​​限的生成器。

标签: python python-2.7 performance generator progress


【解决方案1】:

您无法按照here 的说明从生成器本身获得估算值。

但是如果生成器是您自己平台的一部分,您很可能可以将一个函数添加到同一个类或模块中,这样您就可以估算出生成器的总大小。

例如,如果您正在从文件中读取句子或单词的列表,使用生成器,您可以根据文件的大小估算生成项目的总数,您可以通过恒定的计算成本获得(系统调用)。

根据您的应用程序和数据,您可以应用类似的启发式方法来估计总大小。

【讨论】:

    猜你喜欢
    • 2011-03-09
    • 2021-09-13
    • 2014-07-28
    • 2013-04-17
    • 2013-12-21
    • 2020-07-14
    • 1970-01-01
    相关资源
    最近更新 更多