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 ନାହିଁ।

ସମ୍ପର୍କିତ ପ୍ରବନ୍ଧ