我正在开发一个用于处理大熊猫数据帧的脚本。当我尝试将multiprocessing.Pool
与return
数据一起使用时,它会占用大量内存。
是否可以在不使用multiprocessing.Pool
的情况下更改return
内的数据帧。
例如,这里是工作代码,其中包含return
数据:
import pandas as pd
import numpy as np
import multiprocessing
df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]),
columns=['a', 'b', 'c'])
def square(col):
df[col] = df[col] ** 2
return {'col':col, 'data':df[col]}
with multiprocessing.Pool(processes=16) as pool:
data = pool.map(square, df.columns)
for i in data:
df[i['col']] = i['data']
print(df)
我尝试使用multiprocessing.Manager
和itertools
,但是没有用,或者我使用不正确。
我该怎么做:
import pandas as pd
import numpy as np
import multiprocessing
df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]),
columns=['a', 'b', 'c'])
def square(col):
df[col] = df[col] ** 2
# How to save changes here without returning data?
with multiprocessing.Pool(processes=16) as pool:
data = pool.map(square, df.columns)
print(df)
感谢您的帮助。