#!/usr/bin/env python
# coding: utf-8
# ## Please input your directory for the top level folder
# folder name : SUBMISSION MODEL
# In[ ]:
dir_ = '/home/artemis/M5/A1-Yeon/' # input only here
# #### setting other directory
# In[ ]:
raw_data_dir = dir_+'2. data/'
processed_data_dir = dir_+'2. data/processed/'
log_dir = dir_+'4. logs/'
model_dir = dir_+'5. models/'
# In[ ]:
####################################################################################
########################### 1-1. recursive model by store ##########################
####################################################################################
# In[ ]:
ver, KKK = 'priv', 0
STORES_IDS = ['CA_1','CA_2','CA_3','CA_4','TX_1','TX_2','TX_3','WI_1','WI_2','WI_3']
# In[ ]:
import numpy as np
import pandas as pd
import os, sys, gc, time, warnings, pickle, psutil, random
from multiprocessing import Pool
warnings.filterwarnings('ignore')
# In[ ]:
########################### Helpers
#################################################################################
## Seeder
def seed_everything(seed=0):
random.seed(seed)
np.random.seed(seed)
## Multiprocess Runs
def df_parallelize_run(func, t_split):
num_cores = np.min([N_CORES,len(t_split)])
pool = Pool(num_cores)
df = pd.concat(pool.map(func, t_split), axis=1)
pool.close()
pool.join()
return df
该代码定义了一个函数 df_parallelize_run,它可以并行地运行一个给定函数 func,该函数接受一个输入参数 t_split,该参数会被拆分成多个子列表,每个子列表都会被传递给 func 进行计算。
该函数使用 np.min([N_CORES,len(t_split)]) 计算可用处理器数量与 t_split 子列表数量之间的最小值,以确保并行运行时不会超过处理器数量。
然后使用 Pool() 函数创建进程池,并将 num_cores 作为参数传递给 Pool() 函数来创建多个并行运行的进程。接着使用 pool.map() 函数并行地应用 func 函数,将 t_split 子列表分配给各个进程并运行。最后使用 pd.concat() 函数连接所有进程返回的结果,生成一个 Pandas DataFrame,并使用 pool.close() 和 pool.join() 函数关闭并销毁进程池。
最终函数返回并行计算后的 Pandas DataFrame
# In[ ]:
########################### Helper to load data by store ID
#################################################################################
# Read data
def get_data_by_store(store):
# Read and contact basic feature
df <
M5-competition第一名代码解析学习-1-1. recursive_store_TRAIN.py
于 2023-07-04 12:10:48 首次发布