如何获取python中生成器中的项目的数字?

时间:2018-04-03 13:12:08

标签: python python-2.7 performance generator progress

我在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]
$ 

如何估算发电机中用于进度估算的料品数量?我可以估算到最接近的.25数量级(例如250,000,000或50,000)

1 个答案:

答案 0 :(得分:0)

您无法按照here所解释的那样从生成器本身获取估算值。

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

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

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