R,Python,rpy2:“错误:无法分配大小为xxx Mb的向量”

ODs*_*uck 5 python memory r rpy2

我使用R 3.5.1开发Python 3.7。当我从Python的R脚本调用函数时,它在原则上可以工作,但是最后它崩溃并显示输出:

rpy2.rinterface.RRuntimeError:错误:无法分配大小为1006.0 Mb的向量

我有16GB的RAM,在长时间的处理过程中,我检查了内存使用量的波动,最大波动小于5GB。

为了使事情更加确定,我跟踪了内存使用情况

gc() 
gcinfo(TRUE)
Run Code Online (Sandbox Code Playgroud)

它会自动丢弃垃圾并跟踪R何时这样做。

另外,在RI中获取以下内容,指示16k MB,这是我所有的默认RAM:

> memory.limit()
[1] 16244
Run Code Online (Sandbox Code Playgroud)

最后,当我直接从R运行R脚本时,它可以正常工作,并且不会遇到内存问题。

它是rpy2的强大漏洞还是目前可以管理的其他漏洞?如果有人有任何建议,我们将非常欢迎他们。

作业系统:Windows 10,64bit

Lem*_*nPy 1

从这个线程

这似乎是由 R 向量和 Python 数组之间难以协调的差异引起的。

我可以建议执行以下操作作为解决方法:

  • 通过 R 和 Python 的可相互访问的位置(例如数据库、公共文件夹中的 csv 文件等)传递矢量数据
  • 在 rpy2 页面上开票(或继续链接的线程)
  • 将您的数据(如果可能)分解为您可以通过 rpy2 传输的最大大小并对其进行循环,直到覆盖整个数据集(也许双方的小改动就可以实现这一点 - 取决于您的代码)
  • 考虑线程中提供的转换类型,例如:

    from rpy2.robjects import conversion df_R = conversion.converter.py2ri(df_pandas)

版主注:这可以是评论,但我无法发表评论