python - 无法使用多处理访问另一个函数中的数据帧
问题描述
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 时。我得到空的数据框
解决方案
通过使用multiprocessing
,您正在创建一个具有自己的命名空间和内存(等)的新进程。因此,您无法从主进程中访问新进程的内存,反之亦然。因此,您必须通过Pipe
orQueue
或使用 a传递变量Manager
。
推荐阅读
- azure - 如何在 Nodejs 堆栈上的 Azure Function App 中从 Azure 密钥库中提取密钥
- c# - 如何将字符串列表视为模型中的枚举 - ASP.net Core Web API
- reactjs - 安装后容器显示不正确
- laravel - 是否可以在 laravel 验证规则中验证数字键?
- java - \\W? 在 Java 正则表达式中
- php - 仅允许某些用户帐户进入页面
- python - 如何消除除一个特定变量/列之外的所有具有特定列名的列?
- c# - 某些服务无法构建(验证服务描述符时出错'...IHostedService
- postgresql - 了解 macOS 上的 LANG
- c# - 如何比较具有相同键但不同值的两个字典值?