多进程运行因子
from _config import config
from factor_generator import FactorGenerator
from con_factor import *
import warnings
from alphas_101 import *
from multiprocessing import Pool, Process
warnings.filterwarnings('ignore')
def read_data():
generator = FactorGenerator(config)
df = generator.load_data()
data_map, date_range_index, range_columns \
= generator.transform(df,'2018-1-1', '2022-1-1')
jk_df = generator.load_jk_data()
jk_data_map = generator.jk_transform(jk_df, date_range_index, range_columns)
conv = ConFactor(data_map,jk_data_map=jk_data_map)
return conv
def calculate_alphas(name,instance):
start = time.time()
print('Task %s started'% name)
conv = instance
df = eval('conv'+'.'+name+'()')
end = time.time()
print('Task %s end in %0.2f seconds.' % (name, (end - start)))
return (name,df)
def err_call_back(err):
print(f'出错啦~ error:{str(err)}')
def func_call_back(res):
res[1].to_csv(os.path.join(r'C:\Users\Meeting\Documents\StockData_6_7\alpha_raw_data'\
,res[0]+'.csv'))
if __name__=="__main__":
alpha_dfs={}
conv = read_data()
alpha_names = [i for i in dir(ConFactor) if i.startswith('alpha')]
pool = Pool(5)
for name in alpha_names:
pool.apply_async(func=calculate_alphas, args=(name,conv),\
error_callback=err_call_back,callback=func_call_back)
pool.close()
pool.join()
print('结束测试')