簡體   English   中英

使用未來 R 包的最大並行進程數

[英]maximum number of parallel processes using future package of R

library(future)
plan(multiprocess)
for (i in 1:20) {
  background_process <-  future({
     Sys.sleep(1000)
  })
}
# takes way too long to get here

我有一個 XEON 8 核 16 線程 CPU

我希望上面的代碼能在幾秒鍾內將控制權返回給父進程,我預計創建 20 個進程所需的時間。 但是花費的時間比預期的要長得多。 所以我檢查了我的機器在運行這段代碼時運行的 R 進程的數量。 事實證明,只有 16 個 R 進程在后台運行。

所以問題是,為什么代碼只能創建 16 個進程,從而在等待創建其他 4 個進程時阻塞父進程?

編輯:

啊,我明白了。 運行plan(multiprocess)進程plan(multiprocess)僅創建 16 個進程。 我如何讓它創造更多呢?

如果您閱讀了 R 的未來:全面概述的一點細節,這將是中間的:

“如果沒有指定其他內容,將使用機器上所有可用的內核,參見parallel::detectCores() 。有關更多詳細信息,請參閱help("availableCores", package = "future")

因此,您的XEON 8 核 16 線程 CPU將從 16 個進程開始。

我相信你可以使用這樣的東西來獲得更多:

plan(multisession, workers = 17)
# I've seen this too, not sure when this is necessary
# plan(tweak(multisession, workers = 17)) 

暫無
暫無

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

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