У меня есть код, который я пытаюсь оптимизировать, чтобы быть более эффективным. Одна часть этого состоит в том, чтобы обработать мой файл и после каждой строки обработать, немедленно напишите его на csv
. Это идеально, потому что я не трачу память, обрабатывая данные, а затем загружая данные в список, чтобы выписать весь список. Если добавить целые обработанные данные в список, я могу написать его csv
без проблем, как показано ниже, при # write folded_data to csv
:пишите каждую строку, когда она обрабатывается с использованием for-loop в python, но только для записи первой строки
Примечания: код при #data обработки тверд, и мне просто нужна помощь выписывая каждая строка обрабатывается.
# data processing
seen = set()
folded_data = []
for u in name_nodes:
# seen=set([u]) # print both u-v, and v-u
seen.add(u) # don't print v-u
unbrs = set(B[u])
nbrs2 = set((n for nbr in unbrs for n in B[nbr])) - seen
for v in nbrs2:
vnbrs = set(B[v])
common = unbrs & vnbrs
weight = len(common)
row = u, v, weight
folded_data.append(row)
# write folded_data to csv
with ('out_file.csv', 'wb') as f:
writer = csv.writer(f)
writer.writerows(folded_data)
Однако, когда я пытаюсь и выписывать каждый row
, как она обрабатывается, я получаю только первую строку в «out_file.csv».
# data processing
seen = set()
for u in name_nodes:
# seen=set([u]) # print both u-v, and v-u
seen.add(u) # don't print v-u
unbrs = set(B[u])
nbrs2 = set((n for nbr in unbrs for n in B[nbr])) - seen
for v in nbrs2:
vnbrs = set(B[v])
common = unbrs & vnbrs
weight = len(common)
row = u, v, weight
# write row for each line to csv
with open('out_file.csv', 'wb') as f:
writer = csv.writer(f)
writer.writerow(row)
Я пытался двигаться мой написания кода вокруг, чтобы сделать эту работу, как хотелось бы, чтобы он, но я не был в состоянии понять это.
Вы пытаетесь оптимизировать скорость или память? – therealrootuser
@ mattingly890 - в первую очередь память, так как она в настоящее время пытается загрузить все в список и выписать список, у меня закончилась нехватка памяти. Хотя делать это быстрее, не так уж и плохо! :) –