Я хочу контролировать, где хранятся временные файлы, сгенерированные растровыми функциями. Причина в том, что я хочу иметь возможность удалять временные файлы, которые указаны для процесса c, без удаления тех, которые используются в других процессах, работающих параллельно. Это было предложено Люком Маколей здесь .
Идея состоит в том, что каждый процесс имеет команды, которые: устанавливают спецификацию процесса c tmpdir
, затем запускают некоторую растровую функцию, сохраняют ее процесс-спецификация c выводит куда-то еще, чем tmpDir()
, и, наконец, удаляет процесс-спецификацию c tmpDir()
.
Но некоторые растровые операции сохраняют свои временные файлы в временном каталоге по умолчанию (выглядит как C:\Users\...\Temp\RtmpaevgEe
). Следовательно, эти временные файлы не могут быть удалены в конце каждого процесса и в конечном итоге рискуют заполнить жесткий диск. Это происходит как независимо от того, выполняется ли он для одного процесса, в итеративном l oop процессов или в параллельной настройке.
Мой код для установки временного каталога, определяемого процессом c:
# Define which process we are in:
processname <- file.path(<raster_to_input_to_this_process.tif>)
# Create path to process-specific temp directory
process_tmp_dir <- file.path(paste0(processname,"_Tmp"))
# Create process-specific temp directory
dir.create(process_tmp_dir, showWarnings = FALSE)
# set temp directory
rasterOptions(tmpdir=process_tmp_dir)
rasterOptions()
или tmpDir()
действительно возвращает process_tmp_dir
и не является временным каталогом по умолчанию, который возвращался до команды rasterOptions(tmpdir=process_tmp_dir)
.
Затем, если я запускаю операцию mask
(растр, метод Spatial), временные файлы создаются в process_tmp_dir
, как и ожидалось.
Но если я запускаю calc
, overlay
или aggregate
, мой process_tmp_dir
остается пустым, пока временные файлы появляются во временном каталоге по умолчанию. Однако после этого rasterOptions()
или tmpDir()
вернут process_tmp_dir
.
В каждом случае я указывал filename
аргумент и
canProcessInMemory(processname, verbose = T)
memory stats in GB
mem available: 9.66
60% : 5.8
mem needed : 28.07
max allowed : 4.66 (if available)
[1] FALSE
Интересно, почему эти функции не "соответствуют" новой настройке tmpdir, а mask
. (Также обратите внимание, что mask
генерирует .grd, гораздо более тяжелые, временные файлы, чем те, .tif, сгенерированные calc
et c ..) Я был бы очень признателен за любые предположения, почему это так, и что может быть сделано, чтобы убедиться, что временные файлы любой растровой функции генерируются в указанном tmpDir()
.
. Я могу сделать данные доступными и указать точные растровые операции, если вы считаете, что это необходимо, чтобы лучше понять, что происходит ,