Pythonda parallellikni ta'minlovchi bir nechta usullar mavjud, ular quyidagilar.
1. Threading - I/O ga bog'langan ishlar ichun yaxshi yechim, I/O orasidagi kutish vaqtida yangi jarayon ishga tushiriladi, bir vaqtning o'zida ishlashi kerak bo'lgan jarayonlar uchun yaxshi yechim bo'lishi mumkin, ammo bu GIL tufayli asl parallellikni ta'minlamaydi
2. Asynchronous - Bunda esa hamma jarayon birdaniga ishga tushirilishi mumkin, va uzoq vaqt kuttiradigan ishlar uchun yaxshi yechim. Bu hamma jarayonni bitta tarmoqda ishga tushiradi va CPU ni minimum isrof qiladi
3. Multi processing - Bu ulkan hisoblashlarni amalga oshirish uchun qulay ya'ni bu bir nechta protsessorlarni ishga tushiradi, ammo I/O uchun ko'p kuttirishi mumkin.
Bu esa parallel ravishda google.com ga 2k request yuborilgandagi holat:
Asyncio: Finished 2000 requests in 12.79 seconds
Threading: Finished 2000 requests in 24.86 seconds
Multiprocessing: Finished 2000 requests in 15.71 seconds
I/O - bu input/output tasklar, ya'ni request ketganda input, javob kelishi output, orada esa biroz kutish bor.
GIL - Global Interpreter Lock ya'ni, kodni bitta cpu yadosida run qilib turish
#parallel_programming
1. Threading - I/O ga bog'langan ishlar ichun yaxshi yechim, I/O orasidagi kutish vaqtida yangi jarayon ishga tushiriladi, bir vaqtning o'zida ishlashi kerak bo'lgan jarayonlar uchun yaxshi yechim bo'lishi mumkin, ammo bu GIL tufayli asl parallellikni ta'minlamaydi
2. Asynchronous - Bunda esa hamma jarayon birdaniga ishga tushirilishi mumkin, va uzoq vaqt kuttiradigan ishlar uchun yaxshi yechim. Bu hamma jarayonni bitta tarmoqda ishga tushiradi va CPU ni minimum isrof qiladi
3. Multi processing - Bu ulkan hisoblashlarni amalga oshirish uchun qulay ya'ni bu bir nechta protsessorlarni ishga tushiradi, ammo I/O uchun ko'p kuttirishi mumkin.
Bu esa parallel ravishda google.com ga 2k request yuborilgandagi holat:
Asyncio: Finished 2000 requests in 12.79 seconds
Threading: Finished 2000 requests in 24.86 seconds
Multiprocessing: Finished 2000 requests in 15.71 seconds
I/O - bu input/output tasklar, ya'ni request ketganda input, javob kelishi output, orada esa biroz kutish bor.
GIL - Global Interpreter Lock ya'ni, kodni bitta cpu yadosida run qilib turish
#parallel_programming