Python中的内存泄漏检测

2024-03-29 13:55:59 发布

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

我在python中有一个方法,它完全不是内存密集型的,但是每次我的代码片段到达该方法时,经过大约30-40次迭代,系统的RAM达到100%,系统就会冻结。同样的方法以前没有给任何问题,但现在我似乎找不到一个简单的方法。有什么具体原因吗?我有i5处理器(CPU使用率甚至不到50%)和8gbram。代码段如下:

def modify_data(self, data, col):
    """
    Convert Raw scores to Z-scores.

    Args:
        data (Pandas DataFrame): DataFrame storing raw scores
        col (String): The column on which conversion is being done

    Returns:
        z_score (Pandas DataFrame): New DataFrame storing z-scores instead of raw scores.
    """
    print "inside modify_data"
    # Now calculate z-score based on rolling windows for columns calculated above.

    z_score = pd.DataFrame()

    score = data
    z_scores = []

    ctr = 0

    indeces = score.index.tolist()

    for idx in indeces:
        row = score.ix[idx]

        n = min(idx, self.window)

        if self.use_window:
            subdata = score.iloc[ctr-n:ctr+1]
        else:
            subdata = score.iloc[:ctr+1]

        row = score.ix[idx]
        x = row[0]

        mu = subdata.mean()
        sigma = subdata.std()
        new_score = (x-mu)/sigma

        z_scores = np.append(z_score, new_score)

        ctr += 1

        z_scores = np.array(z_scores)
        tmpDF = pd.DataFrame(data=z_scores, columns=[col])

        z_score = z_score.append(tmpDF)

    return z_score

早些时候,我实施了:

for index, row in score.iterrows():

在循环上迭代,并认为可能iterrows基于性能比较慢,因此切换到在索引列表上迭代。但即使这样似乎也无济于事。任何输入都会非常有用

谢谢。。你知道吗


Tags: 方法selfdataframepandasfordata系统col