Допустим, у меня есть файл Excel с 100k строк. Мой код пытается читать его строка за строкой, и для каждой строки выполнять вычисления (включая оценку того, сколько времени требуется для выполнения каждой строки). Затем мой код выдаст массив результатов со 100 тыс. Строк. Я сделал свой код на Python, но он неэффективен и занимает у меня несколько дней, а также результаты тестов ухудшаются из-за большого потребления памяти, я думаю. Пожалуйста, посмотрите мою попытку и дайте мне знать, как ее улучшить.
Мой код сохраняет результаты = [] и записывает его только в конце. Кроме того, в начале я сохраняю весь файл excel в листе ... Я думаю, что это вызовет проблему с памятью, так как в моем приложении Excel очень большой текст в ячейках (не только числа).
ExcelFileName = 'Data.xlsx'
workbook = xlrd.open_workbook(ExcelFileName)
worksheet = workbook.sheet_by_name("Sheet1") # We need to read the data
num_rows = worksheet.nrows #Number of Rows
num_cols = worksheet.ncols #Number of Columns
results=[]
for curr_row in range(1,num_rows,1):
row_data = []
for curr_col in range(0, num_cols, 1):
data = worksheet.cell_value(curr_row, curr_col) # Read the data in the current cell
row_data.append(data)
#### do computation here ####
## save results like results+=[]
### save results array in dataframe and then print it to excel
df = pd.DataFrame(results)
writer = pd.ExcelWriter("XX.xlsx", engine="xlsxwriter")
df.to_excel(writer, sheet_name= 'results')
writer.save()
Я хотел бы прочитать первую строку из Excel и сохранить ее в памяти, выполнить вычисления, получить результат и сохранить его в Excel, а затем перейти ко второму ряду без сохранения такой загруженности памяти. При этом у меня не будет массива результатов, содержащего 100 тыс. Строк, так как каждый цикл я его стираю.