प्रक्रियाओं के लिए नौकरियों को मैप करने के लिए चार विकल्प हैं। आपको बहु-तर्क, समवर्ती, अवरुद्ध करने और आदेश देने पर विचार करना होगा। map
और map_asnyc
अवरुद्ध करने के संबंध में केवल भिन्न है।
0
1
9
4
16
25
36
49
64
81
0
HERE
1
4
MORE
16
25
36
9
49
64
81
DONE
pool.map(f, range(10))
उन समारोह के सभी 10 के लिए इंतजार करेंगे खत्म करने के लिए कहता है: map_async
गैर अवरुद्ध जहां map
रूप
ब्लॉक कर रहा है तो मान लीजिए कि आपने एक समारोह
from multiprocessing import Pool
import time
def f(x):
print x*x
if __name__ == '__main__':
pool = Pool(processes=4)
pool.map(f, range(10))
r = pool.map_async(f, range(10))
# DO STUFF
print 'HERE'
print 'MORE'
r.wait()
print 'DONE'
उदाहरण आउटपुट था है इसलिए हम एक पंक्ति में सभी प्रिंट देख रहे हैं r = pool.map_async(f, range(10))
उन्हें अतुल्यकालिक रूप से निष्पादित करेगा और r.wait()
कहा जाता है जब हम केवलदेखेंगेऔर MORE
के बीच में DONE
हमेशा
नक्शा पूरा होने के बाद ही नक्शा वापस नहीं लौटाता है (यानी समकालिक रूप से लेकिन समांतर में), जबकि 'map_async' तुरंत लौटता है और मैपिंग को अनुमति देता है पृष्ठभूमि में किया गया (यानी असीमित रूप से और समानांतर में)? –