मैं multicore
पैकेज (उबंटू पर) से mclapply
के साथ काम कर रहा हूं, और मैं एक ऐसा फ़ंक्शन लिख रहा हूं जिसके लिए mclapply(x, f)
के परिणाम क्रम में लौटाए गए हैं (यानी f(x[1]), f(x[2]), ...., f(x[n])
)।क्या मैक्लेप्ली ने अपने परिणामों को क्रम में वापस करने की गारंटी दी है?
# multicore doesn't work on Windows
require(multicore)
unlist(mclapply(
1:10,
function(x){
Sys.sleep(sample(1:5, size = 1))
identity(x)}, mc.cores = 2))
[1] 1 2 3 4 5 6 7 8 9 10
ऊपर कोड के अर्थ में किया lapply
के रूप में एक ही क्रम में है कि mclapply
परिणाम प्रदान करती है लगता है।
हालांकि, अगर यह धारणा गलत है तो मुझे अपने कोड को दोबारा सुधारने में काफी समय व्यतीत करना होगा, इसलिए मैं इस पैकेज/समांतर कंप्यूटिंग से परिचित किसी से आश्वासन प्राप्त करने की उम्मीद कर रहा हूं कि यह धारणा सही है।
क्या यह मानना सुरक्षित है कि mclapply
वैकल्पिक तर्कों के बावजूद हमेशा इसके परिणाम लौटाता है?
डॉक्स का संकेत नहीं है कि परिणाम तले में आ सकता है, और यह स्पष्ट है कि यह एक समानांतर है 'lapply' का संस्करण, जो इनपुट के रूप में आदेश दिया गया सूची देता है। आप अनुक्रमिक और समांतर मोड में अपने कोड का एक भाग चला सकते हैं और देख सकते हैं कि यह आपके विशेष मामले के लिए है या नहीं। मैं अनुमान लगाता हूं कि यह करता है। –