Как использовать Multiprocessing в Pandas? - PullRequest
0 голосов
/ 28 мая 2019

когда я использую многопроцессорность в обычной программе, она хорошо работает в пандах, но когда я использую эту многопроцессорность, время не уменьшается.

Я пытался с нормальным кодом, используя многопроцессорность

import multiprocessing
import time
import pandas as pd
start=time.time()

def square(df1):
    df1['M_threading'] = df1['M_Invoice_type']
def multiply(df4):
    df4['M_threading'] = df4['M_Invoice_type']

if __name__ == '__main__':
    df = pd.read_excel("filename.xlsx")
    df1 = df.loc[df['M_Invoice_type'] == 'B2B']
    df4 = df.loc[df['M_Invoice_type'] == 'B2BUR']
    p=multiprocessing.Process(target=square,args=(df1,))
    p1 = multiprocessing.Process(target=multiply, args=(df4,))
    p.start()
    p1.start()
    p.join()
    p1.join()
    print("Done")
    end=time.time()
    print(end-start)

Я ожидаю время вывода кода 25 сек, но фактический вывод составляет 51 сек.

1 Ответ

0 голосов
/ 28 мая 2019

Попробуйте позвонить multiprocessing.Process с двумя созданными новыми кадрами данных.

p = multiprocessing.Process(target=square,args=(df1,))
p1 = multiprocessing.Process(target=multiply, args=(df4,))
...