Python内存效率范围

2024-04-24 19:48:31 发布

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

我正在寻找一些方法来使用我的代码使下面的MaxPower()函数的最小代码更节省内存。在

MaxPower()的用途:对于整数iN_remainder,返回{}的最大值,使i^m除以{}。在

只有当i除{}时,MaxPower()才在{}函数中调用

目前,下面链接的代码对要分解的数字有以下结果(以标准格式编写):

  1. 1x10^8-效果良好。产生了两个结果数组,并且是正确的
  2. 5x10^8-挂起Linux和操作系统完全没有响应。计算机需要硬重启。在
  3. 1x10^9-终端内存错误。在

Linux Mint 17上使用的Python版本是2.74。在

我目前正在学习python。在

def MaxPower(i,N_remainder):
    m=1
    MxP=1
    for n in range (2, N_remainder + 1):        
        b = i**n    
        a = N_remainder % b
        if a==0:    
            m = m+1                 
        else: 
            MxP = m     
            break
    return MxP

自最初发布以来的修订代码:

^{pr2}$

我意识到以下几点(我目前还没有尝试过这一点,但我目前还没有尝试过)

  1. 可以在编译的C代码中做更多的工作-转换为“列表理解”
  2. 确保每次使用后删除线程(amp;U)。在

Tags: 方法函数内存代码标准链接linux格式
1条回答
网友
1楼 · 发布于 2024-04-24 19:48:31

Python 2 ^{} function为给定范围内的每个数字创建一个列表。整个列表需要存储在内存中,因此对于N_remainder的大值,它可以变得非常大。在

取而代之的是^{}函数,它的作用几乎相同。它使用常量内存,只存储参数并只在需要时计算每个值,一旦使用就不存储旧值。如果将对range的调用替换为对xrange的调用,则函数应该使用几乎恒定的内存。在

注意,如果N_remainder + 1对于python int太大,xrange函数将无法工作,但是文档提供了一个替代方法。在


这不是内存问题,但不需要显式调用long;python2会在必要时自动转换为long类型。在

相关问题 更多 >