多进程处理数据,处理结束之后dataframe里面的数据无变化。

本人正在处理大量的数据的时候想到采用多进程的方式加快数据处理的速度,但是不知道为什么,数据处理完之后,dataframe里面的数据并没有像函数定义那样新增一列,然后等于别的两列相加得来。所以想来请教一下各位大佬。

以下是我那50条数据来试验的代码:

from multiprocessing import Pool

import pandas as pd

f = open(r'F:\寒假\交通大数据计算\数据\0511_20.csv')

df = pd.read_csv(f,nrows=50)

def youfunc(a):

a['new']=a['new'].map(lambda x:x['FNODE']+x['TNODE'])

return a

if name == '__main__':

p = Pool(2)

df1 = df.iloc[:25]

df2 = df.iloc[25:49]

list_df = [df1,df2]

for i in range(2):
p.apply_async(youfunc, args=(list_df[i],))

p.close()

p.join()

希望有大佬能指出小弟的错误,感激不尽感激不尽。

你没有获取进程处理的返回结果,只是单纯的处理了datatframes
我找了网上一个例子,如下:

import time
from multiprocessing import Pool

def fn(i):
    time.sleep(0.5)
    return i*i

if __name__ == '__main__':
    p = Pool(5)
    l = []
    for i in range(10):
        ret = p.apply_async(fn,args=(i,))
        l.append(ret)
        # print(ret.get())    # 阻塞 get 方法会等待 fn 执行完毕拿到返回值才会往下走,这里从异步变成了同步
        # print('asd')
    for i in l: # 解决方法.
        i.get()
        print('asd')