Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在大数据集上运行R-script时,如何防止计算机崩溃 目标:从一个位置到另一个位置读取、压缩和写入图像。 图像数据集的大小约为5 TB。单个图像的平均大小约为2-5 Mb 问题:当我运行它时 整个数据集,我的Mac在大约1GB后崩溃。剧本很有效 对于大约400幅图像的子集_R_Image_Imagemagick_Purrr - Fatal编程技术网

在大数据集上运行R-script时,如何防止计算机崩溃 目标:从一个位置到另一个位置读取、压缩和写入图像。 图像数据集的大小约为5 TB。单个图像的平均大小约为2-5 Mb 问题:当我运行它时 整个数据集,我的Mac在大约1GB后崩溃。剧本很有效 对于大约400幅图像的子集

在大数据集上运行R-script时,如何防止计算机崩溃 目标:从一个位置到另一个位置读取、压缩和写入图像。 图像数据集的大小约为5 TB。单个图像的平均大小约为2-5 Mb 问题:当我运行它时 整个数据集,我的Mac在大约1GB后崩溃。剧本很有效 对于大约400幅图像的子集,r,image,imagemagick,purrr,R,Image,Imagemagick,Purrr,通过一个接一个地阅读图片,我希望它不会需要太多的内存和处理能力,但我可能错过了一些东西。有人能回顾一下我下面的代码,并深入了解它崩溃的原因吗?如有任何提示和建议,将不胜感激。抱歉没有给出可复制的示例 rm(list=ls()) ## 1. LOAD PACKAGES library(magick) library(purrr) library(furrr) ## 2. SET MAIN FOLDER Directory_Folder <- "C:/Users/Nick/Dow

通过一个接一个地阅读图片,我希望它不会需要太多的内存和处理能力,但我可能错过了一些东西。有人能回顾一下我下面的代码,并深入了解它崩溃的原因吗?如有任何提示和建议,将不胜感激。抱歉没有给出可复制的示例

rm(list=ls())

## 1. LOAD PACKAGES
library(magick)
library(purrr)
library(furrr)

## 2. SET MAIN FOLDER
Directory_Folder <- "C:/Users/Nick/Downloads/" 
Folder_Name <- "Photos for Nick"

## 3. SET NEW LOCATION
New_Directory <- "C:/Users/Daikoro/Desktop/"     ## MAKE SURE TO INCLUDE THE FINAL FORWARD SLASH

## 4. LIST ALL FILES
list.of.files <- list.files(path = paste0(Directory_Folder, Folder_Name), full.names = TRUE, recursive = TRUE)

## 5. FUNCTION FOR READING, RESIZING, AND WRITING IMAGES
MyFun <- function(i) {
  
  new.file.name <- gsub(Directory_Folder, New_Directory, i)
  
  magick::image_read(i) %>%  ## IMPORT PHOTOS INTO R
            image_scale("400") %>%  ## IMAGE RE-SCALING
            image_write(path = new.file.name)
}

## 6. SET UP MULTI-CORES
future::plan(multiprocess)

## 7. RUN FUNCTION ON ALL FILES
future_map(list.of.files, MyFun)   ## THIS WILL TAKE A WHILE...AND CRASHES AT 1GB
rm(list=ls())
## 1. 加载包
图书馆(magick)
图书馆(purrr)
图书馆(Furr)
## 2. 设置主文件夹

在Ben Bolker、r2evans和Waldi的反馈下,我成功地启动了脚本。我在MyFun的最后一行添加了
gc()
。并且还指定了一些核心,如下所示:

## SET UP MULTI-CORES
no_cores <- availableCores() - 1
future::plan(multisession, workers = no_cores)
##设置多核

没有内核您使用了多少内核?啊,我没有指定,但我假设“future::plan(multiprocess)”将评估并设置适当的内核数。我的观点是,多进程不是共享内存,因此您可能会尝试并行运行比您有内存的任务更多的内存,从而耗尽内存?。。。虽然
多进程
有合理的默认值。。。相信it会知道您计划做什么,并给您提供适当数量的流程,这确实是解决问题的良方。我想这是你自找的。顺便说一句:由于您所做的只是缩放所有图像,因此使用
magick.exe
命令行实用程序(不包括在R的
magick
包中)很可能更容易做到这一点,因为我怀疑不需要在R中将图像读取到内存中。例如,如果您在包含源图像的目录下的控制台中,然后你可以
mkdir-sm;ls*jpg | xargs-p4-IZ magick convert Z-resize 300 sm/Z
用于同时调整四幅图像的大小。如果你想提高一个档次,就把
-P
号调高。我不认为R的
magick
包比这个方法快,即使作者采取了很多警告,如果R的实现“有点”慢(未经测试),我也不会感到惊讶。