首页 > 解决方案 > 无法使用多处理访问另一个函数中的数据帧

问题描述

import multiprocessing
from multiprocessing import Pool

import pandas as pd
globvar = 0
df1 = pd.DataFrame()


def set_globvar_to_one(n):
    global globvar  
    global df1
    globvar = 1
    df1 = n
    print('df1', df1)
    return df1

def print_globvar():
    print('globvar',globvar)    
    print('df1',df1)

if __name__ == "__main__":
    a ='Python Code'

    with Pool(1) as p:
        df2= p.map(set_globvar_to_one, [a])
        print ("df1----------------",df2)
    print_globvar()

无法使用多处理访问另一个函数中的数据帧。通过多处理,我将内容保存到数据帧 df1 但是当我尝试在 print_globvar 函数中访问 df1 时。我得到空的数据框

标签: pythondataframemultiprocessing

解决方案


通过使用multiprocessing,您正在创建一个具有自己的命名空间和内存(等)的新进程。因此,您无法从主进程中访问新进程的内存,反之亦然。因此,您必须通过PipeorQueue或使用 a传递变量Manager


推荐阅读