首页 > 解决方案 > 进程以退出代码 -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

标签: pythonrpycharmcross-validationrpy2

解决方案


我在 PyCharm 2021.1 中遇到了同样的错误消息“进程以退出代码 -1073741819 (0xC0000005) 完成”。

这是因为我选择了 Python 3.9 作为解释器,而 PyCharm 实际上是在尝试使用 Python 3.10。实际上我只安装了 Python 3.8。

就我而言,在我选择 Python 3.8 作为解释器后,错误消失了。


推荐阅读