python - 进程以退出代码 -1073741819 (0xC0000005) - Rpy2 完成
问题描述
我在堆栈溢出和其他网站上搜索了很多这个错误,但我似乎找不到解决我的问题的方法。
基本上,我有一个程序,python
我正在使用 python 的模块rpy2与 python 中的一些R
函数进行通信。
问题是,当我运行代码时,有时但并非总是会遇到此错误。我在窗户上。有时当我重新启动我的电脑时,这段代码会运行更多的练习,但最终这个错误会再次弹出。我应该怎么办 ?
我有python 3.6.7
,与PyCharm 2018.3.3
。但是我怀疑问题出在哪里,因为当我从同样的事情PyCharm
运行我的程序时,除了程序直接停止而没有通知我消息“进程完成,退出代码-1073741819(0xC0000005)”。此消息仅出现在 PyCharm 中,但仍然存在。 cmd
我有rpy2 version 2.9.5
代码说明
相对而言,我确实知道代码的哪一部分正在执行此操作,但我无法对其进行更多优化。换句话说,在这部分代码中,在交叉验证中,我以某种方式过度填充每个训练集和验证集,为了做到这一点,我将 X_train 和 y_train 组合回一个数据帧,过度填充这个数据框,然后取回更新的、过度填充的 X_train 和 y_train,并对这些过度填充的数据执行我的分析。我认为将两者组合成numpy
数组pandas
数据框然后取消组合会产生此内存错误。同样重要的是要注意这发生在每个折叠中,我正在做一个 10-folds-10-repeats 交叉验证。但是,即使我在台式机而不是笔记本电脑上运行它,也会发生同样的事情,因为我知道我自己的笔记本电脑上还有很多 GB。我怀疑这是 python/rpy2 错误??
代码片段
# I am calling this function inside each fold
df_combined = self.prepare_data(X_train, y_train)
然后在打电话后prepare_data()
我做如下:
# THE apply_f1(), apply_f2(), apply_f3(), and apply_f4() ARE THE FUNCTIONS
# THAT USE rpy2 INTERNALLY
if self.f1:
X_train_inner, y_train_inner = self.apply_f1(df_combined)
elif self.f2:
X_train_inner, y_train_inner = self.apply_f2(df_combined)
elif self.f3:
X_train_inner, y_train_inner = self.apply_f3(df_combined)
else:
X_train_inner, y_train_inner = self.apply_f4(df_combined)
prepare_data()
功能:
def prepare_data(self, X_train, y_train):
'''
concatenates X_train_inner and y_train_inner into one, and make them a data frame
so we are able to process the data frame by SMOGN, RandUnder, GN, or SMOTER
'''
# reshape + rename
X_train_samp = X_train
y_train_samp = y_train.reshape(-1, 1)
# combine two numpy arrays together into one numpy array
combined = np.concatenate((X_train_samp, y_train_samp), axis=1)
# transform X_train + y_train into a pandas dataframe
column_names = self.other + [self.target_variable]
df_combined = pd.DataFrame(combined, columns=column_names)
# convert the combined pandas dataframe to R Data.Frame
df_combined = pandas2ri.py2ri(df_combined)
return df_combined
解决方案
我在 PyCharm 2021.1 中遇到了同样的错误消息“进程以退出代码 -1073741819 (0xC0000005) 完成”。
这是因为我选择了 Python 3.9 作为解释器,而 PyCharm 实际上是在尝试使用 Python 3.10。实际上我只安装了 Python 3.8。
就我而言,在我选择 Python 3.8 作为解释器后,错误消失了。
推荐阅读
- r - 如何计算数据框列的不同值并排序到新数据框?由所述数据框的每几行分隔
- php - 如何在while循环中保持循环?
- discord - Discord.js 编辑重启消息
- html - HTML CSS:将谷歌图标变成按钮,周围没有矩形
- sleep - AVR wakeup for external interrupt then immediately reading USART
- wso2 - 在 jndi.properties 中为入站端点配置指定 java.naming.provider.url
- python - 启动和停止线程的函数?
- python - 由于python中的for循环导致的索引错误
- oracle - 提取 CLOB 数据以进行插入
- c - VRUNTIME 变量最大值以分钟/小时为单位