Sobes.tech
Junior — Middle

Python'da vazifalarni parallel yoki raqobatbardosh tarzda bajarish uchun qanday usullar amalga oshirilgan?

sobes.tech AI

AIdan javob

Python'da, vazifalarni parallel yoki konkurent tarzda bajarish uchun bir nechta yondashuvlar va kutubxonalar mavjud:

  1. threading moduli — iplar (threads) yaratish uchun. Ko'p kirish-chiqish operatsiyalari bo'lgan vazifalar uchun mos, lekin GIL sababli CPU-bound vazifalarni tezlashtirmaydi.

  2. multiprocessing moduli — jarayonlar yaratish uchun. GIL ni chetlab o'tishga va bir nechta CPU yadroidan samarali foydalanishga imkon beradi.

  3. asyncio moduli — korutinlar yordamida asinxron dasturlash uchun. Ko'p kirish-chiqish operatsiyalari uchun yaxshi.

  4. Yuqori darajadagi kutubxonalar:

    • concurrent.futures.ThreadPoolExecutor va ProcessPoolExecutor — vazifalarni iplar yoki jarayonlarda ishga tushirish uchun qulay interfeyslar.

concurrent.futures dan foydalanish misoli:

from concurrent.futures import ThreadPoolExecutor

def vazifa(n):
    print(f"Vazifa {n} bajarilmoqda")

with ThreadPoolExecutor(max_workers=3) as executor:
    for i in range(5):
        executor.submit(vazifa, i)

Shunday qilib, usul tanlovi vazifa turiga bog'liq: CPU-bound uchun — multiprocessing, I/O-bound uchun — threading yoki asyncio.