मेरे पास एक ऐसा फ़ंक्शन है जो कुछ सिमुलेशन करता है और स्ट्रिंग प्रारूप में एक सरणी देता है।पायथन मल्टीप्रोसेसिंग - पूल.मैप ऑपरेशन की प्रक्रिया को ट्रैक करना
मैं के लिए सिमुलेशन (फ़ंक्शन) को 10000 संभावित इनपुट मानों, से अधिक इनपुट पैरामीटर मानों को चलाने और एक फ़ाइल में परिणाम लिखना चाहता हूं।
मैं समानांतर में सिमुलेशन चलाने के लिए मल्टीप्रोसेसिंग, विशेष रूप से, पूल.मैप फ़ंक्शन का उपयोग कर रहा हूं।
10000 बार से अधिक सिमुलेशन फ़ंक्शन चलाने की पूरी प्रक्रिया में बहुत लंबा समय लगता है, मैं वास्तव में पूरे ऑपरेशन की प्रक्रिया को ट्रैक करना चाहता हूं।
मुझे लगता है कि नीचे मेरे वर्तमान कोड में समस्या यह है कि, पूल.मैप उन परिचालनों के दौरान किसी भी प्रक्रिया ट्रैकिंग के बिना 10000 बार फ़ंक्शन चलाता है। एक बार समांतर प्रसंस्करण 10000 सिमुलेशन (दिन के लिए घंटों तक हो सकती है) चलने के बाद खत्म हो जाती है, तो जब मैं 10000 सिमुलेशन परिणाम फ़ाइल में सहेजा जा रहा हूं तो मैं ट्रैकिंग करता हूं .. इसलिए यह वास्तव में पूल.मैप ऑपरेशन की प्रसंस्करण को ट्रैक नहीं कर रहा है।
क्या मेरे कोड में कोई आसान फिक्स है जो प्रक्रिया ट्रैकिंग की अनुमति देगा?
def simFunction(input):
# Does some simulation and outputs simResult
return str(simResult)
# Parallel processing
inputs = np.arange(0,10000,1)
if __name__ == "__main__":
numCores = multiprocessing.cpu_count()
pool = multiprocessing.Pool(processes = numCores)
t = pool.map(simFunction, inputs)
with open('results.txt','w') as out:
print("Starting to simulate " + str(len(inputs)) + " input values...")
counter = 0
for i in t:
out.write(i + '\n')
counter = counter + 1
if counter%100==0:
print(str(counter) + " of " + str(len(inputs)) + " input values simulated")
print('Finished!!!!')
आपको बहुत बहुत धन्यवाद! – user32147