Как распараллелить функцию с несколькими аргументами в python? - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть функция,

def Recommendation(df1,df2,array1,array2):
    for i in range(len(df1)):
        . #do something
        . 
        .
        result = {} #The result is a dictionary and is inserted into mongodb
        db.collectionname.insert_one(result)  

Данные df1 велики, и для завершения выполнения в цикле требуется много времени. Как распараллелить этот процесс в Python, используя несколько аргументов?

   def parallelize_dataframe(df,func):
       df_split = np.array_split(df, num_partitions)    
       pool = Pool(num_cores)
       pool.starmap(func,df_split)
       pool.close()
       pool.join()

   num_partitions = 5
   num_cores = 5


  if __name__ == '__main__':
       df1= pd.read_csv("filename.csv")    
       df2= pd.read_csv("filename2.csv")

       array1 = numpy.array1 #Loading numpy array
       array2 = numpy.array2 

       parallelize_dataframe(df1, Recommendation(df1,df2,array1,array2))

Этот процесс очень медленный. Я не уверен, если работа распределена по ядрам. Пожалуйста, помогите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...