Невозможно получить доступ к кадрам данных в другой функции, используя многопроцессорность - PullRequest
0 голосов
/ 09 марта 2020
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, но при попытке доступа к df1 в функции print_globvar. Я получаю пустые кадры данных

1 Ответ

1 голос
/ 09 марта 2020

Используя multiprocessing, вы создаете новый процесс с собственным пространством имен и памятью (et c.). Таким образом, вы не можете получить доступ к памяти вашего нового процесса из основного процесса и наоборот. Поэтому вы должны передавать переменные через Pipe или Queue или использовать Manager.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...