उदाहरण के लिए:
from multiprocessing import Pool
from functools import partial
numbers = []
for i in range(100):
numbers.append(i)
def add_one(number, new_numbers):
new = number + 1
new_numbers.append(new)
new_numbers = []
process_pool = Pool(2)
add_one_helper = partial(add_one, new_numbers=new_numbers)
process_pool.map(add_one_helper, numbers)
print(new_numbers)
मुझे लगता है कि new_numbers प्रिंट होगा: 1, 2, 3, 4..., लेकिन यह प्रिंट() में खाली है। कॉल के बाद नए_नंबरों को कैसे पॉप्युलेट किया जाए?
1 उत्तर
पहले एक अवलोकन। आपके पास:
numbers = []
for i in range(100):
numbers.append(i)
यह 0, 1, 2 ... 99 मानों वाली सूची बनाने के लिए लूप का उपयोग कर रहा है। लेकिन आप उतनी ही आसानी से और अधिक कुशलता से निर्दिष्ट कर सकते हैं:
numbers = list(range(100))
लेकिन वास्तव में पुनरावर्तनीय तर्क को Pool.map
पद्धति में पारित किया जा रहा है, एक सूची होने की आवश्यकता नहीं है (हालांकि, यह स्वचालित रूप से एक सूची में परिवर्तित हो जाएगा यदि यह __len__
पद्धति का समर्थन नहीं करता)। तो नंबर
सूची बनाने के बजाय, आप श्रेणी(100)
के बजाय map< के पुनरावर्तनीय तर्क के रूप में बस पास कर सकते थे। / कोड> कॉल। अब हाथ में प्रश्न पर:
Pool.map
विधि कार्यकर्ता फ़ंक्शन (add_one
इस मामले में) को कॉल करने से सभी रिटर्न मानों की एक सूची देता है। तो आपको केवल add_one
वापसी की आवश्यकता है जो वह नई सूची में जोड़ना चाहता है:
from multiprocessing import Pool
def add_one(number):
return number + 1
process_pool = Pool(2)
new_numbers = process_pool.map(add_one, range(100))
print(new_numbers)
प्रिंट:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।
Pool.map
का उपयोग करने का यह पूरी तरह से गलत तरीका है। आप इसे सामान्य तरीके से क्यों नहीं कर सकते?