gpt4 book ai didi

python - 如何解决 mtrand.RandomState.choice 中的内存错误?

转载 作者:行者123 更新时间:2023-11-28 17:40:06 27 4
gpt4 key购买 nike

我正在尝试从 1e5 个字符串中抽取 1e7 个项目,但出现内存错误。从 1e4 个字符串中抽取 1e6 个项目很好。我在一台有 4GB 内存的 64 位机器上,我认为我不应该在 1e7 时达到任何内存限制。有什么想法吗?

$ python3
Python 3.3.3 (default, Nov 27 2013, 17:12:35)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> K = 100

适用于 1e6 :

>>> N = int(1e6)
>>> np.random.choice(["id%010d"%x for x in range(N//K)], N)
array(['id0000005473', 'id0000005694', 'id0000004115', ..., 'id0000006958',
'id0000009972', 'id0000003009'],
dtype='<U12')

N=1e7 错误:

>>> N = int(1e7)
>>> np.random.choice(["id%010d"%x for x in range(N//K)], N)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "mtrand.pyx", line 1092, in mtrand.RandomState.choice (numpy/random/mtrand/mtrand.c:8229)
MemoryError
>>>

我发现了这个问题,但它似乎是关于捕获这样的错误而不是解决它。

Python not catching MemoryError

无论是仍然使用 random.choice 的解决方案还是其他方法,我都会很高兴。谢谢。

最佳答案

您可以使用生成器函数解决此问题:

def item():
for i in xrange(N):
yield "id%010d"%np.random.choice(N//K,1)

这避免了一次需要内存中的所有项目。

关于python - 如何解决 mtrand.RandomState.choice 中的内存错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25627161/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com