带数据帧的python并行进程列表

2024-09-27 23:17:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含数据帧的列表。在一个循环中,我迭代这个列表,清理列表中的每个数据帧,并将其转储到另一个列表并返回该列表:

allDfs = []
def processDfs(self):

    for df in listOfDfs():
        for column_name in need_to_change_column_name:
            ...# some column name changes
        df.set_index('id', inplace=True)

        ## dropping any na
        df = df.dropna()
        ...

        df['cost'] = df['cost'].astype('float64')

        allDfs.append(df)

    return allDfs

如何在多个线程之间分配listOfDfs中的每个数据帧的处理?收集并返回进程dfs的列表。在


Tags: to数据nameinselfdf列表for
1条回答
网友
1楼 · 发布于 2024-09-27 23:17:25

使用多处理模块:

from multiprocessing import Pool

# enter the desired number of processes here
NUM_PROCS = 8    

def process_single_df(df):
    """
    Function that processes a single df.
    """
    for column_name in need_to_change_column_name:
        # some column name changes
        ...

    df.set_index('id', inplace=True)

    ## dropping any na
    df = df.dropna()
    ...

    df['cost'] = df['cost'].astype('float64')

    return df

pool = Pool(processes=NUM_PROCS)

allDfs = pool.map(process_single_df, listOfDfs)

号召池.map正在阻塞,这意味着它将等待所有进程完成,然后程序才能继续。在

如果您不需要马上使用allDfs(您很乐意在并行处理工作的同时继续计算其他东西),那么可以在最后一行使用pool.map_async

^{pr2}$

相关问题 更多 >

    热门问题