max_workers=8 takmarkar keyrsluþræðina. Það kemur þó ekki í veg fyrir að sérstök sendingarlykkja búi til Future fyrir hvern endapunkt í gríðarlegu inntaki.

Python 3.14 bætir við takmarkaðum forlestrarvalkosti:

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 er fyrirliggjandi samstillta prófunin með netfrestum og hreinsun; record_result meðhöndlar þá athugun sem hún skilar. Gildin 8 og 24 eru dæmi um fjárhagsáætlun. ókeypis proxylisti býður opinbera kandídata fyrir endapunkta; haltu siðareglum þeirra með hverju vistfangi svo check_proxy geti notað rétta flutninginn.

Þegar sendingarbiðminnið fyllist stöðvar map neyslu á endurtekningunni þar til niðurstöður eru afhentar. Þetta á einnig við um rafala.

map skilar enn í röð inntaks: hæg snemma prófun getur haldið áfram fullunnum seinni niðurstöðum og seinkað frekara inntaki. Fyrir vinnslu í röð lokunar skal nota skýrt takmarkað safn futures sem fyllt er á ný þegar þau ljúka.

Meðhöndlaðu væntanleg netmistök inni í prófuninni ef hópurinn á að halda áfram að skila niðurstöðum. Ómeðhöndluð undantekning er kastað þegar það atriði er sótt. chunksize í ThreadPoolExecutor veitir ekki þessa sendingaráætlun og eldri Python-útgáfur hafa ekki buffersize.

Tengdir greinar