gpt4 book ai didi

python - 使用 Pool 在 Python 中进行多重处理

转载 作者:行者123 更新时间:2023-12-01 09:24:25 24 4
gpt4 key购买 nike

我想使用 Python 在数据帧上并行化函数。我看了教程,找到了一些代码。我已根据我的需要对其进行了调整。当我执行 map 函数时,程序卡住。代码看起来很可靠。我想知道问题出在哪里。

import pandas as pd
import numpy as np
from multiprocessing import cpu_count, Pool

attributes1 = pd.read_csv('attributes1.csv')


def replace_data(data):
for i in range(0, len(data.index)):
temp = data.iloc[i, 1]
temp = temp.replace('in.', 'inch')
data.iloc[i, 1] = temp
return data

num_partitions = 10 #number of partitions to split dataframe
num_cores = cpu_count() #number of cores on your machine

def parallelize_dataframe(df, func):
df_split = np.array_split(df, num_partitions)
pool = Pool(num_cores)
df = pd.concat(pool.map(func, df_split))
pool.close()
pool.join()
return df

df1 = parallelize_dataframe(attributes1, replace_data)

最佳答案

这仅是 Windows 用户的问题。首先,我创建了另一个 .py 文件,将其命名为 helpy.py,其中有我的 Replace_data 函数

def replace_data(data):
for i in range(0, len(data.index)):
temp = data.iloc[i, 1]
temp = temp.replace('in.', 'inch')
data.iloc[i, 1] = temp
return data

然后我将函数导入到主 .py 文件中。

import pandas as pd
import numpy as np
from multiprocessing import cpu_count, Pool
from helpy import replace_data

attributes1 = pd.read_csv('attributes1.csv')


num_partitions = 10 #number of partitions to split dataframe
num_cores = cpu_count() #number of cores on your machine

def parallelize_dataframe(df, func):
df_split = np.array_split(df, num_partitions)
pool = Pool(num_cores)
df = pd.concat(pool.map(func, df_split))
pool.close()
pool.join()
return df

if __name__ == '__main__':
df1 = parallelize_dataframe(attributes1, replace_data)

我还添加了if __name__ == '__main__':现在程序运行顺利。

关于python - 使用 Pool 在 Python 中进行多重处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50551356/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com