max_workers=8 چلنے والے تھریڈز کو محدود کرتا ہے۔ لیکن یہ نہیں روکتا کہ الگ جمع کرنے کا لوپ بڑے ان پٹ میں ہر اینڈ پوائنٹ کے لیے Future بنائے۔

Python 3.14 ایک محدود پیشگی مطالعہ کا آپشن شامل کرتا ہے:

from concurrent.futures import ThreadPoolExecutor

with ThreadPoolExecutor(max_workers=8) as executor:
    for result in executor.map(check_proxy, endpoints, buffersize=24):
        record_result(result)

check_proxy نیٹ ورک کی مقررہ مدتوں اور صفائی کے ساتھ موجودہ ہم وقت جانچ ہے؛ record_result اس کی واپس کردہ مشاہدہ کو سنبھالتا ہے۔ اقدار 8 اور 24 نمونہ بجٹ ہیں۔ مفت پراکسی فہرست اینڈ پوائنٹس کے لیے عوامی امیدوار فراہم کرتی ہے؛ ہر پتے کے ساتھ اس کا پروٹوکول رکھیں تاکہ check_proxy درست ٹرانسپورٹ استعمال کر سکے۔

جب جمع کرنے کا بفر بھر جاتا ہے تو map نتائج ملنے تک دہرائی جانے والی شے کی کھپت روک دیتا ہے۔ یہ جنریٹرز پر بھی لاگو ہوتا ہے۔

map اب بھی ان پٹ کی ترتیب سے دیتا ہے: سست ابتدائی جانچ مکمل شدہ بعد کے نتائج کو روک سکتی ہے اور مزید ان پٹ میں تاخیر کر سکتی ہے۔ تکمیل کی ترتیب سے کارروائی کے لیے واضح طور پر محدود futures کا مجموعہ استعمال کریں جو مکمل ہونے پر دوبارہ بھرتا ہے۔

اگر بیچ کو نتائج دیتے رہنا ہے تو متوقع نیٹ ورک ناکامیوں کو جانچ کے اندر سنبھالیں۔ وہ آئٹم لیتے وقت غیر حل شدہ استثنا اٹھتا ہے۔ ThreadPoolExecutor کا chunksize یہ جمع کرنے کا بجٹ فراہم نہیں کرتا، اور پرانے Python ورژنز میں buffersize نہیں ہے۔

متعلقہ مضامین