Pool.apply_async का उपयोग करके बड़ी संख्या में कार्यों (बड़े पैरामीटर के साथ) चलाते समय, प्रक्रिया आवंटित की जाती है और प्रतीक्षा स्थिति पर जाती है, और प्रतीक्षा प्रक्रियाओं की संख्या के लिए कोई सीमा नहीं होती है। यह सभी स्मृति खाने से खत्म कर सकते हैं नीचे उदाहरण में है:पायथन मल्टीप्रोसेसिंग: प्रतीक्षा प्रक्रियाओं की संख्या को सीमित करने के लिए कैसे?
import multiprocessing
import numpy as np
def f(a,b):
return np.linalg.solve(a,b)
def test():
p = multiprocessing.Pool()
for _ in range(1000):
p.apply_async(f, (np.random.rand(1000,1000),np.random.rand(1000)))
p.close()
p.join()
if __name__ == '__main__':
test()
मैं इंतज़ार कर कतार सीमित करने के लिए एक तरह से के लिए खोज रहा हूँ, इस तरह से वहाँ केवल प्रक्रियाओं इंतज़ार कर की एक सीमित संख्या है, और प्रतीक्षा कतार पूर्ण होने पर Pool.apply_async अवरुद्ध है।
अच्छा उदाहरण (+1)। – mgilson