У меня есть функция, которая содержит несколько аргументов.Аргументы - это разные фреймы данных.
def MongoInsertion(prop,SimMat_subset,Res_contents,resources,standards):
client = MongoClient(port=27017)
db=client.knovation
std2_F = SimMat_subset.loc[0]
print(std2_F)
Std_index = SimMat_subset.iloc[0].name
Standard_list = standards.iloc[Std_index]['Standard Grades']
Standard_list = list(Standard_list.split(" "))
Standard_list = Standard_list[0].split(",")
Filtered_Resource=Res_contents[Res_contents['Grades'].str.split(',',expand=True).isin(Standard_list).any(1)]
Filter_score = std2_F[std2_F.index.isin(Filtered_Resource.index)]
Filter_score_list = Filter_score.tolist()
result_filtered = {}
result_filtered["GUID"]=str(standards.iloc[Std_index]['GUID'])
Evaluation = {}
for k in range(0,len(Filtered_Resource)):
Evaluation[str(Filtered_Resource.iloc[k]['Evaluation Code'])] = Filter_score_list[k]
sorted_Evaluation = dict( sorted(Evaluation.items(), key=operator.itemgetter(1),reverse=True))
sorted_Evaluation = dict(itertools.islice(sorted_Evaluation.items(), 10))
result_filtered.update(sorted_Evaluation)
print(result_filtered)
result1 = db.ParallelPro_Maths.insert_one(result_filtered)
Вывод будет вставлен в MongoDB.
Я хочу, чтобы эта функция применялась к фрейму данных с использованием многопроцессорной обработки python.
Нижеэто метод, который я попробовал:
from multiprocessing import Pool
num_partitions = 3
num_cores = 4
def parallelize_dataframe(df,func):
df_split = np.array_split(df, num_partitions)
pool = Pool(num_cores)
pool.starmap(func, df_split)
pool.close()
И я применяю многопроцессорность:
parallelize_dataframe(SimMat_subset,MongoInsertion)
Вышеупомянутый метод, похоже, не работает.Как сделать распараллеливание с несколькими аргументами?