I am manipulating some data from dataframes(650MB) so I am using parallel processing in python. The problem is that I thought that it would require CPU usage of around 80-90% but it is requiring only 40%, sometimes not even that. It is taking almost 4 hours to have the results. My computer configuration is: Processor Intel 13700 Memory: 32GB Windows 11 Nvidia Geforce RTX 3060
What am I doing wrong? Following I present the code:
import modin.pandas as pd
import warnings
from time import sleep
import ray
import psutil
ray.init(num_cpus=24)
p=psutil.Process()
p.cpu_affinity([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23])
RAY_DEDUP_LOGS=0
warnings.filterwarnings('ignore')
df_energia = pd.read_csv('UCBT.csv')
df_curva = pd.read_csv('CRVCRG.csv')
df_dias=pd.DataFrame(columns=['TIP_DIA','Mês'])
Janeiro=[ 'DO', 'DO', 'DU', 'DU', 'DU', 'DU', 'DU', 'SA', 'DO', 'DU', 'DU', 'DU', 'DU', 'DU', 'SA', 'DO', 'DU', 'DU', 'DU', 'DU', 'DU', 'SA', 'DO', 'DU', 'DU', 'DU', 'DU', 'DU', 'SA', 'DO', 'DU']
TipodeCarga=['RES-TIPO1', 'RES-TIPO2', 'RES-TIPO3', 'RES-TIPO4', 'RES-TIPO5', 'RES-TIPO6', 'RES-TIPO7', 'RES-TIPO8', 'RES-TIPO9', 'RES-TIPO10', 'COM-TIPO1' , 'COM-TIPO2' , 'COM-TIPO3' , 'COM-TIPO4' , 'COM-TIPO5' , 'COM-TIPO6' , 'COM-TIPO7' , 'COM-TIPO8' , 'COM-TIPO9' , 'COM-TIPO10', 'IND-TIPO1' , 'IND-TIPO2' , 'IND-TIPO3' , 'IND-TIPO4' , 'IND-TIPO5' , 'IND-TIPO6' , 'IND-TIPO7' , 'IND-TIPO8' , 'IND-TIPO9' , 'IND-TIPO10']
Arquivo_csv=['demandaanual_RES-TIPO1.csv', 'demandaanual_RES-TIPO2.csv', 'demandaanual_RES-TIPO3.csv', 'demandaanual_RES-TIPO4.csv', 'demandaanual_RES-TIPO5.csv', 'demandaanual_RES-TIPO6.csv', 'demandaanual_RES-TIPO7.csv', 'demandaanual_RES-TIPO8.csv', 'demandaanual_RES-TIPO9.csv', 'demandaanual_RES-TIPO10.csv', 'demandaanual_COM-TIPO1.csv', 'demandaanual_COM-TIPO2.csv', 'demandaanual_COM-TIPO3.csv', 'demandaanual_COM-TIPO4.csv', 'demandaanual_COM-TIPO5.csv', 'demandaanual_COM-TIPO6.csv', 'demandaanual_COM-TIPO7.csv', 'demandaanual_COM-TIPO8.csv', 'demandaanual_COM-TIPO9.csv', 'demandaanual_COM-TIPO10.csv', 'demandaanual_IND-TIPO1.csv', 'demandaanual_IND-TIPO2.csv', 'demandaanual_IND-TIPO3.csv', 'demandaanual_IND-TIPO4.csv', 'demandaanual_IND-TIPO5.csv', 'demandaanual_IND-TIPO6.csv', 'demandaanual_IND-TIPO7.csv', 'demandaanual_IND-TIPO8.csv', 'demandaanual_IND-TIPO9.csv', 'demandaanual_IND-TIPO10.csv']
Arquivo_csv_janeiro=['demandaJaneiro_RES-TIPO1.csv', 'demandaJaneiro_RES-TIPO2.csv', 'demandaJaneiro_RES-TIPO3.csv', 'demandaJaneiro_RES-TIPO4.csv', 'demandaJaneiro_RES-TIPO5.csv', 'demandaJaneiro_RES-TIPO6.csv', 'demandaJaneiro_RES-TIPO7.csv', 'demandaJaneiro_RES-TIPO8.csv', 'demandaJaneiro_RES-TIPO9.csv', 'demandaJaneiro_RES-TIPO10.csv', 'demandaJaneiro_COM-TIPO1.csv', 'demandaJaneiro_COM-TIPO2.csv', 'demandaJaneiro_COM-TIPO3.csv', 'demandaJaneiro_COM-TIPO4.csv', 'demandaJaneiro_COM-TIPO5.csv', 'demandaJaneiro_COM-TIPO6.csv', 'demandaJaneiro_COM-TIPO7.csv', 'demandaJaneiro_COM-TIPO8.csv', 'demandaJaneiro_COM-TIPO9.csv', 'demandaJaneiro_COM-TIPO10.csv', 'demandaJaneiro_IND-TIPO1.csv', 'demandaJaneiro_IND-TIPO2.csv', 'demandaJaneiro_IND-TIPO3.csv', 'demandaJaneiro_IND-TIPO4.csv', 'demandaJaneiro_IND-TIPO5.csv', 'demandaJaneiro_IND-TIPO6.csv', 'demandaJaneiro_IND-TIPO7.csv', 'demandaJaneiro_IND-TIPO8.csv', 'demandaJaneiro_IND-TIPO9.csv', 'demandaJaneiro_IND-TIPO10.csv']
df_mes=pd.DataFrame(Janeiro,columns=['TIP_DIA'])
df_mes['Mês']='Janeiro'
df_dias_janeiro=pd.concat([df_dias,df_mes])
list_POT=['POT_01', 'POT_02', 'POT_03', 'POT_04', 'POT_05', 'POT_06', 'POT_07', 'POT_08', 'POT_09', 'POT_10', 'POT_11', 'POT_12', 'POT_13', 'POT_14', 'POT_15', 'POT_16', 'POT_17', 'POT_18', 'POT_19', 'POT_20', 'POT_21', 'POT_22', 'POT_23', 'POT_24', 'POT_25', 'POT_26', 'POT_27', 'POT_28', 'POT_29', 'POT_30', 'POT_31', 'POT_32', 'POT_33', 'POT_34', 'POT_35', 'POT_36', 'POT_37', 'POT_38', 'POT_39', 'POT_40', 'POT_41', 'POT_42', 'POT_43', 'POT_44', 'POT_45', 'POT_46', 'POT_47', 'POT_48', 'POT_49', 'POT_50', 'POT_51', 'POT_52', 'POT_53', 'POT_54', 'POT_55', 'POT_56', 'POT_57', 'POT_58', 'POT_59', 'POT_60', 'POT_61', 'POT_62', 'POT_63', 'POT_64', 'POT_65', 'POT_66', 'POT_67', 'POT_68', 'POT_69', 'POT_70', 'POT_71', 'POT_72', 'POT_73', 'POT_74', 'POT_75', 'POT_76', 'POT_77', 'POT_78', 'POT_79', 'POT_80', 'POT_81', 'POT_82', 'POT_83', 'POT_84', 'POT_85', 'POT_86', 'POT_87', 'POT_88', 'POT_89', 'POT_90', 'POT_91', 'POT_92', 'POT_93', 'POT_94', 'POT_95', 'POT_96']
for i in range(len(TipodeCarga)):
df_curva_res=df_curva.loc[df_curva['COD_ID']==TipodeCarga[i]]
col=df_curva_res.loc[:,'POT_01':'POT_96']
df_curva_res['Media']=col.mean(axis=1)
df_curva_res_mean=df_curva_res
df_curva_res_mean[list_POT]=df_curva_res_mean[list_POT].div(df_curva_res.Media,axis=0)
df_demanda_maio = pd.merge(df_curva_res, df_dias_maio, how="right", on="TIP_DIA")
df_demanda_maio_simples = df_demanda_maio[list_POT]
df_demanda_maio_stack = df_demanda_maio_simples.stack()
df_demanda_maio_linha=df_demanda_maio_stack.T
df_energia_tipodecarga = df_energia.loc[df_energia['TIP_CC'] == TipodeCarga[i]]
df_energia_tipodecarga_maio = df_energia_tipodecarga.loc[:, 'ENE_05'] / (24 * 30)
df_energia_tipodecarga_mai_coluna = df_energia_tipodecarga_maio.transpose()
df_energia_tipodecarga_mai_coluna1 = df_energia_tipodecarga_mai_coluna.tolist()
Cargas_maio=pd.DataFrame()
for j in range(len(df_energia_tipodecarga_maio)):
Cargas_maio[i]=df_demanda_maio_linha.mul(df_energia_tipodecarga_maio.iloc[j],axis=0)
df_energia_tipodecarga_indicerefeito=df_energia_tipodecarga.reset_index()
df_allcolums_UCBT_mais_carga = df_energia_tipodecarga_indicerefeito.join(Cargas_maio.droplevel(0).T)
df_allcolums_UCBT_mais_carga.to_csv(Arquivo_csv_maio[i])
This is my first question here so if you need more information please just tell me. The code is running but I think it can run faster with a higher usage of the CPU.