के साथ वस्तुओं को डुप्लिकेट मैं एक बहुत ही विशाल स्ट्रिंग वेक्टर है और एक समानांतर कंप्यूटिंग foreach
और dosnow
पैकेज का उपयोग करना चाहते हैं से बचने के लिए कैसे। मैंने देखा कि foreach
प्रत्येक प्रक्रिया के लिए वेक्टर की प्रतियां बनायेगा, इस प्रकार सिस्टम मेमोरी को जल्दी से निकालें। मैंने सूची वस्तु में वेक्टर को छोटे टुकड़ों में तोड़ने की कोशिश की, लेकिन अभी भी कोई स्मृति उपयोग में कमी नहीं दिख रही है। क्या किसी के पास इस पर विचार है? उपयोग किए जा रहे आम तौर पर क्योंकि श्रमिकों को प्रभावी ढंग से fork
के जादू से tt
साझा कर सकते हैं doMC
बैकएंड के साथ अच्छी तरह से काम करता है बार-बार दोहराना कीforeach
library(foreach)
library(doSNOW)
library(snow)
x<-rep('some string', 200000000)
# split x into smaller pieces in a list object
splits<-getsplits(x, mode='bysize', size=1000000)
tt<-vector('list', length(splits$start))
for (i in 1:length(tt)) tt[[i]]<-x[splits$start[i]: splits$end[i]]
ret<-foreach(i = 1:length(splits$start), .export=c('somefun'), .combine=c) %dopar% somefun(tt[[i]])
बस एक विचार: यदि आप स्मृति की खपत में गिरावट दिखाई दे रही है जब 'सेवानिवृत्त बुला <-foreach (के टीटी में, .export = c ('somefun'), .combine = ग)% dopar% somefun (के) ' – Beasterfield
संकेत, बीस्टरफील्ड के संकेत के लिए धन्यवाद, लेकिन ऐसा लगता है कि 'foreach'' वाक्यविन्यास 'को पहचानने में विफल रहता है। – baidao
मुझे खेद है, बेशक मेरा मतलब था 'foreach (k = tt, ...) '। – Beasterfield