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 ដែលមានកំណត់ច្បាស់លាស់ ហើយបំពេញឡើងវិញនៅពេលពួកវាបញ្ចប់។

ដោះស្រាយការបរាជ័យបណ្តាញដែលរំពឹងទុកនៅក្នុងការត្រួតពិនិត្យ ប្រសិនបើបាច់ត្រូវបន្តផ្តល់លទ្ធផល។ ករណីលើកលែងដែលមិនបានដោះស្រាយត្រូវបានលើកឡើងនៅពេលធាតុនោះត្រូវបានយក។ chunksize នៅក្នុង ThreadPoolExecutor មិនផ្តល់ថវិកាដាក់ស្នើនេះទេ ហើយកំណែ Python មុនៗមិនមាន buffersize ទេ។

អត្ថបទពាក់ព័ន្ធ