簡體   English   中英

使用Rpy2清除R內存

[英]Clear R memory using Rpy2

我有一堆需要通過python調用的R函數。 但是,當我嘗試分配一個大矩陣時,出現內存錯誤。 相同的功能可以在同一台計算機上的RStudio上正常運行。 這是一個崩潰的代碼塊:

#python:
import rpy2.robjects as ro 
import gc
gc.collect()
ro.r.source("calibration_functions.R")
result1 = ro.r.func1()  #Does some calculations, works fine.
result2 = ro.r.func2(result1) #Crashes at this step

#R code:
func2 <- function(result1){
  preds_mat = matrix(data=NA, nrow = 263310, ncol = 1000)
  # do something...
  return(preds_mat)
}

我得到的錯誤是:RRuntimeError:錯誤:無法分配大小為1004.4 Mb的向量

如何清潔R記憶? gc()或gc.collect()不起作用。

清潔R存儲器:

rm(list = ls())

(...)

相同的功能可以在同一台計算機上的RStudio上正常運行。

可能具有相同的功能,但可能與其他應用程序的內存使用有所不同。

您的R函數func2()返回以下對象大小:

> object.size(func2(1))
1053240200 bytes

這大約是1.05Gb。

我得到的錯誤是:RRuntimeError:錯誤:無法分配大小為1004.4 Mb的向量

觀察到的錯誤很可能是由於未指定的函數func1()發生了什么,還是因為RStudio中的執行與rpy2中的執行之間發生了某些變化。

我通常通過分配更多的內存來解決此問題

from rpy2 import robjects
R = robjects.r


R('memory.limit()')
R('memory.limit(size = 10000)') ## in MB
R('memory.limit()')

…
R('gc()')## trigger garbage collection

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM