[英]Parallel running multiple data frames within a function
假設我有一個 function,
def corr_array(data):
return data
以及以下數據幀,
import numpy as np
np.random.seed([3,1415])
ind1 = ['A_PC','B_PC','C_PC','D_PC','E_PC','F_PC','N_PC','M_PC','O_PC','Q_PC']
col1 = ['sap1','luf','tur','sul','sul2','bmw','aud']
df1 = pd.DataFrame(np.random.randint(10, size=(10, 7)), columns=col1,index=ind1)
ind2 = ['G_lncRNAs','I_lncRNAs','J_lncRNAs','K_lncRNAs','L_lncRNAs','M_lncRNAs','R_lncRNAs','N_lncRNAs']
col2 = ['sap1','luf','tur','sul','sul2','bmw','aud']
df2 = pd.DataFrame(np.random.randint(20, size=(8, 7)), columns=col2,index=ind2)
然后我拆分了上面的數據框,因為它們在原始版本中很大,
# {"pc_1" : split_1, "pc_2" : split_2}
pc = {f"pc_{i + 1}": v for i, v in enumerate(np.array_split(df1, 2))}
lc = {f"lc_{i + 1}": v for i, v in enumerate(np.array_split(df2, 2))}
並在以下循環中調用那些拆分數據幀,
for pc_k, pc_v in pc.items():
for lc_k, lc_v in lc.items():
# (pc_1, lc_1), (pc_1, lc_2) ..
# run the above function for each combination and save the results
corr_array(pd.concat([pc_v, lc_v])). \
to_csv(f"{pc_k}_{lc_k}.csv", sep="\t", index=False)
在這里,它從列表pc
和lc
中一個接一個地運行一個數據幀。 因此,完成這些工作需要很長時間。
我想知道是否有一種方法可以並行運行連接數據幀的每個組合? 這樣可以節省時間。 目前,腳本要花很長時間才能完成運行。
感謝任何建議或幫助。
Looks like you can try to use multiprocessing function, try to look into the documentation https://docs.python.org/2/library/multiprocessing.html . 我建議您也查看此視頻https://youtu.be/oEYDqQ1pq9o?list=PLQVvvaa0QuDfju7ADVp5W1GF9jVhjbX- _
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.