Sobes.tech
Junior — Middle

Jaké metody jsou v Pythonu implementovány pro provádění úkolů paralelně nebo konkurenčně?

sobes.tech AI

Odpověď od AI

Python-da se istifadə olunan müxtəlif yanaşmalar və kitabxanalar paralel və ya mübarizə aparan tapşırıqları yerinə yetirmək üçün:

  1. threading modulu — ip (thread) yaratmaq üçün. Çox giriş-çıxış əməliyyatları olan tapşırıqlar üçün uyğundur, amma GIL səbəbindən CPU-bound tapşırıqları sürətləndirmir.

  2. multiprocessing modulu — proseslər yaratmaq üçün. GIL-i keçmək və çox nüvəli CPU-dan səmərəli istifadə etmək imkanı verir.

  3. asyncio modulu — korutinlər istifadə edərək asinxron proqramlaşdırma üçün. Çox sayda giriş-çıxış əməliyyatları üçün yaxşıdır.

  4. Yüksək səviyyəli kitabxanalar:

    • concurrent.futures.ThreadPoolExecutorProcessPoolExecutor — tapşırıqları ip və ya proseslərdə işlətmək üçün rahat interfeys.

concurrent.futures dan istifadə nümunəsi:

from concurrent.futures import ThreadPoolExecutor

def tapşırıq(n):
    print(f"Tapşırıq {n} icra olunur")

with ThreadPoolExecutor(max_workers=3) as executor:
    for i in range(5):
        executor.submit(tapşırıq, i)

Beləliklə, metod seçimi tapşırığın növündən asılıdır: CPU-bound üçün — multiprocessing, I/O-bound üçün — threading və ya asyncio.