首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python itertools.combinations()内存问题

Python itertools.combinations()内存问题
EN

Stack Overflow用户
提问于 2011-11-24 14:59:51
回答 1查看 1.9K关注 0票数 2

我正在处理大量的项目组合(来自英雄联盟),大约7200,000,000个项目,所有这些项目都被输入到一个函数中,该函数计算它们的益处。

我们正在努力寻找最佳的组合。

忽略了这样一个事实,从算法上讲,可能有更好的方法来做到这一点,有人能告诉我为什么我会得到一个内存错误吗?

代码语言:javascript
复制
allpossiblei = itertools.combinations(items.keys(),5)
maxc = 0
i = 0
for combo in allpossiblei:
    icombo = [items[name] for name in combo]
    res, tcost = calcStats(icombo, 0.658,100,100)
    if res > maxc :
        maxc = res
        print str(res) + " " + str(res/tcost)
        print combo
        print float(i)/79208745.0
    if i % 500000 == 0:
        print str(float(i)/79208745.0) + "\n \n"
        gc.collect()
    i = i + 1

除了使用局部变量进行算术运算外,calcStats什么也不做。

这会迅速耗尽2gb+内存,并在大约5分钟内退出。我以为itertools应该提供一个不会占用大量内存的生成器?我甚至抛出了gc.collect()语句,但它似乎不起作用。有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2011-11-24 15:40:05

组合通过使用提供的整个迭代器来创建一个池。没有办法绕过这一点。请参阅文档中函数的伪代码:http://docs.python.org/library/itertools.html#itertools.combinations

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8253227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档