Python 3 - 模块需要数小时才能执行,csv文件

时间:2017-03-04 11:02:39

标签: python performance csv

我是python的初学者,但它似乎是我需要完成的任务的好工具。

该脚本的目的是清理/排序并从相当大的csv文件中挑选出特定的数据集(1,600万行和8列)。

据我所知,代码中的某些行效率不高,但脚本现在已经运行了20多个小时。我收到了shell中没有错误代码,但我怀疑我已经超过了某种容量限制。

要清楚,代码仍然在我的笔记本电脑,8 GB RAM和m3-6Y30处理器上执行。

我的代码是否真的很慢,或者某处有无限循环还是我做了一些致命的错误?

如果代码速度很慢,我只是想知道是否应该将其关闭并开始新的,因为它无法正常工作。

CG063_formatted是大的,MasterClean2是已经清理过的较小的。他们来自同一个来源。不幸的是,我无法向您展示文件的内容。

感谢所有帮助。

import csv

f1 = open('CG063_formatted.csv', "r")
f2 = open('MasterClean2.csv', "r")
f13 = open('Master_add.csv', "w")


csv_f1 = csv.reader(f1, delimiter=',')
csv_f2 = csv.reader(f2, delimiter=',')
csv_f13 = csv.writer(f13, lineterminator='\n')

Prov_param = ['LSP1_NV_BSFC', 'LSP1_NV_FlwFuel', 'LSP1_NV_PCAC', 'LSP1_NV_Pwr', 'LSP3_NV_BSFC', 'LSP3_NV_FlwFuel', 'LSP3_NV_PCAC', 'LSP3_NV_Pwr', 'LST2_NV_BSFC', 'LST2_NV_FlwFuel', 'LST2_NV_TrqEng']

Prov_param2 = ['6', '7', '8', '9', '11']


# ------ Clean / remove duplicate ------- #

DataList = []
for line in csv_f1:
    if line in DataList or line[2] != '1':
        continue
    else:
        DataList.append( line )


DataList2 = []
for line in DataList:
    for row in csv_f2:
        if line[1] == row[0]:
            continue
        else:
            DataList2.append(line)

# ------ Main ------ #

DataList3 = []
for line in Datalist2:
    for row in DataList3:
        if line[1] == row[0]:
            continue
        else:
            DataList3.append(list(range(56)))   #create list with range 56 in DataList3
            row[0] = line[1]                    #place LOPNUMMER in column 1 DataList3

for row in DataList3:                           #place 0 in all cells except column 1
    for item in row:
        if item != NULL:
            item = '0'

for line in DataList2:
    for row in DataList3:
        if line[1] == row[0]:                    #LOPNUMMER@Datalist2 == LOPNUMMER@Datalist3 ?
            k=1
            for item in Prov_param2:            #test type? 6,7,8,9,11?
                k= k+11
                if item == line[5]:
                    break
            i=0
            for item2 in Prov_param:             #Which test parameter?
                i=i+1
                if item == line[4]:
                    break
            row[i+k] = line[6]                  # write the test value to cell in DataList3



# ------ print to file -------- #

for row in csv_f2:
    csv_f13.writerow(row)

for row in DataList3:
    csv_f13.writerow(row)


# ------ Close / return value ------ #

f1.close()
f2.close()
f13.close()

0 个答案:

没有答案