0
library(doParallel)
library(RMySQL)
no_cores <- as.integer(system('getconf _NPROCESSORS_ONLN', intern = TRUE)) - 1
cluster <- makeCluster(no_cores)
registerDoParallel(cl)
clusterEvalQ(
cluster,
mysql <- RMySQL::dbConnect(...)
}
)
r <- foreach(i = 1:50, .verbose = TRUE) %dopar% { dbGetQuery(mysql, 'show tables;')}
no variables are automatically exported
沒有錯誤,沒有抱怨。沒什麼,它只是凍結。我可以啓動並使用沒有數據庫連接的集羣。foreach與數據庫連接凍結,沒有錯誤,永遠
想法?
謝謝Steve,這絕對是最後一部分。我什麼也沒得到,它只是掛起,所以也許是數據庫連接失敗。我只是希望有一些輸出。我離開它約20分鐘,它仍然在那裏卡住,沒有錯誤信息或任何東西。我也忽略了在我的例子中添加'registerDoParallel',但它在我的實際中。我會嘗試你的建議,並讓你知道他們是否有任何工作。感謝您的關注! –
您是否可以擴展一下「避免序列化連接對象」的含義? –
@BrandonBertelsen在我的例子中,如果我在調用'clusterEvalQ'時沒有包含'NULL',它會嘗試返回由工作人員創建的連接對象列表。由於數據庫連接對象包含套接字連接,因此會導致序列化錯誤。我不認爲這會造成任何實際問題,但這令人不安。 –