Python语句使用过多的RAM

2024-09-27 02:26:03 发布

您现在位置:Python中文网/ 问答频道 /正文

这个简单的陈述:

zip(xrange(0, 11614321), xrange(0, 11627964))

…正在吃掉我的大部分公羊。(大于150兆字节!)为什么?在

编辑:啊,重新阅读文档,我看到zip返回了一个列表,而不是iterable。像zip这样返回iterable的内容吗?在


更大的图片:我正在迭代两个大的文件数据数组,我在做迭代(0-end,0-end),(0-end,1-end)等。我不想分割数组,因为这会导致内存分配过多。我想我应该只迭代索引,但这似乎行不通,如上所述。整个代码:

^{pr2}$

Tags: 文件数据内存文档编辑内容列表字节
2条回答

如果出于某种原因,您不想使用itertools模块,那么编写自己的迭代器来完成相同的工作是很简单的,至少如果您知道您正在处理的是两个输入迭代器。在

def xzip2(i1, i2):
    i1, i2 = iter(i1), iter(i2)
    while True:
        yield next(i1), next(i2)

实际上,经过进一步思考,使用任意数量的迭代器并不难。我相当确定itertools.izip必须实现这样的东西。在

^{pr2}$

(看看the documentation,我看到了,除了他们使用map而不是列表理解)

使用itertools中的izip

相关问题 更多 >

    热门问题