Написал программку, но меня не устраивает время выполнения, хотелось бы побыстрее.
Полагаю есть несколько способов как ускорить:
- Запускать в какой-то среде разработки или в консоли(я запускал в текстовом редакторе Sublime)
- Подключить какую-то библиотеку, чтоб распаралелить выполнение(в процессе выполнения, у меня, было задействовано одно ядро, процессор грузился в среднем на 17-18 %)
- Улучшить код программы
- Возможно что-то еще, о чем даже не знаю что такое может быть)
import os import pandas as pd #digit from str def extract_deg(input_str): if input_str is None or input_str == '': return 0 out_number = '' f = 0 for ele in input_str: if ele.isdigit() or ele == '-': out_number += ele elif ele == ',': out_number += '.' f = 1 if f == 1: out_number = (float(out_number)) else: out_number = (int(out_number)) return (out_number) frame = pd.DataFrame() af = os.listdir(path=".") nf = af[10:-5] for i in nf: frame = frame.append(pd.read_csv(i), ignore_index=True) frame.to_csv("datatest.csv", encoding='utf-8', sep='\t', index=False) frame['minmax'] = frame['MAX'] - frame['MIN'] #массивы переменных dlst = ['dvar1', 'dvar2', ..., 'dvar11'] slst = ['svar1', 'svar2', ..., 'svar20'] elst = ['evar1', 'evar2', ..., 'evar44'] blst = ['year', 'mounth', 'day', 'hh', 'mm'] sls = [] for i in slst: exec(i + ' = []') exec('sls.append('+i+')') els = [] for i in elst: exec(i + ' = []') exec('els.append('+i+')') bls = [] for i in blst: exec(i + ' = []') exec('bls.append('+i+')') print(len(frame)) for i in range(len(frame)): year.append(int(str(frame['DATE'][i])[:4])) mounth.append(int(str(frame['DATE'][i])[4:6])) day.append(int(str(frame['DATE'][i])[6:8])) hh.append(int(str(frame['TIME'][i])[:2])) mm.append(int(str(frame['TIME'][i])[2:4])) time = [year[i], mounth[i], day[i], hh[i], mm[i], 0] print(i, end=' ') #def1, def2 собирают текстовые данные, из которых, #при помощи extract_deg вытаскиваются числовые значения for p in range(len(dlst)-1): l = (def1(dlst[p], time)) sls[p*2].append(l[0]) sls[(p*2)+1].append(l[1]) for p in range(len(dlst)): l = (def2(dlst[p], time)) els[p*4].append(l[0]) els[(p*4)+1].append(l[1]) els[(p*4)+2].append(l[2]) els[(p*4)+3].append(l[3]) alllst = sls + els + bls salllst = slst + elst + blst for i in range(len(alllst)): frame[salllst[i]] = pd.Series(alllst[i]) frame.to_csv("data.csv", encoding='utf-8', sep='\t', index=False)
Пока вы это читаете, сделаю чтоб результат выводился не в конце выполнения программы, а к примеру каждые 10000 строк датафрейма)