在一些Python会话之后,Linux变得越来越慢

时间:2015-12-02 13:53:37

标签: python linux performance numpy

我可能有一个“怪异”的问题。我正在使用linux MINT和python,在一些“会话”之后,我认为Linux变得非常缓慢。我有时会中止一个python脚本,因为我发现它出错了或其他什么。如果我重新启动计算机,我知道它会很快...

对于其他一些迭代步骤也是如此:例如:

for test in tests:
    os.system("python code.py "+something[i][0]+" "+something[i][1]+" 3 "+test+" usage")

在迭代2或3中,代码变得越来越慢。是否可能,我正在使用一些numpy数组不正确?或者是否有可能python不删除“最后”的版本,它是在Linux的“背景”中工作还是保存?对不起,如果问题有点“不好”,不要现在python的行为。

在2台计算机上的Linux Mint和Ubuntu上尝试过它。

我的电脑:

Xeon E3-1231 v3,16GB DDR3,

MCVE

import numpy as np
from sklearn.ensemble import RandomForestClassifier

target=int(sys.argv[3])

method=sys.argv[4]

vs=sys.argv[5]

def manu(test,test2):     #split到X和y     X = []     Y = []

for i,j in enumerate(test):
    X.append(test[i][0])
    y.append(float(test[i][1]))
x=np.array(X)
y=np.array(y)



pRF={ 
'class_weight':['balanced_subsample'],
'n_estimators':treeRange,
'max_features':['sqrt'],
'min_samples_leaf':[1,2,3]}
classifiers=[RandomForestClassifier(random_state=1)]
paraCV=[pRF]
titles=['RF']

for name, clf, parCV in zip(titles,classifiers,paraCV):

    fol=10
    skf = StratifiedKFold(y, n_folds=fol)
    pre,sen,spe,ba,area,params,scores=[],[],[],[],[],[],[]
    #outer loop
    for train_index, test_index in skf:
        #inner loop    
        #print train_index, test_index
        predi=[]
        train=train_index.tolist()
        test=test_index.tolist()
        X_train=[]
        X_test=[]
        y_train=[]
        y_test=[]
        for i in train:
            X_train.append(x[i])    
        for i in test:
            X_test.append(x[i]) 

        for i in train:
            y_train.append(y[i])

        for i in test:
            y_test.append(y[i]) 
        gs = GridSearchCV(estimator=clf,param_grid=parCV,cv=fol,n_jobs=5).fit(X_train,y_train)  

        expected= [0.0 if z==2.0 else z for z in y_test]
        predicted=gs.predict_proba(X_test)
        predicted1= predicted[:,0].tolist()
        params.append(gs.best_params_)
        expi=expected
        expected=np.array(expected)

        # and so on.. code would be way to long for an MCVE

if __name__=="__main__": 


    train=sys.argv[1]
    test=sys.argv[2]

并且这个代码将使用另一个python文件执行5次,就像我在开头用os.system命令提到的那样。

看起来,这只发生在Linux上,而不是发生在Windows上。

0 个答案:

没有答案