如何以非阻塞方式保存大文件?
我使用JupyterLab和R做数据分析。有时,我需要用saveRDS函数保存一个大对象(例如15 to )。这会阻塞内核,我不得不等到它保存完文件后才运行简单的print语句。
我觉得这样做是可能的,但我找不到合适的方法去做。
发布于 2022-07-05 19:20:55
这就是我想出来的,如果可能的话,请改进一下。
library(future)
plan(multisession)
# read some data (dummy example)
data = readRDS('/path/to/some/data.rds')
# save the data
data_size = object.size(data)
path_to_save = "/path/to/save.rds"
size_of_path_object = object.size(path_to_save)
# adjust the limit on the total size of globals for exporting to future expressions
options(future.globals.maxSize = data_size + size_of_path_object)
saved = future({
saveRDS(data, path_to_save)
})
# restore original limit
original_limit = 500 * 1024^2
options(future.globals.maxSize = original_limit) 您可以检查该文件是否与以下内容一起保存:resolved(saved)。它将返回真假。
https://stackoverflow.com/questions/72776234
复制相似问题