Sobes.tech
Junior — Middle

Aké metódy sú implementované v Pythone na vykonávanie úloh paralelne alebo konkurentne?

sobes.tech AI

Odpoveď od AI

V Pythone sa používajú rôzne prístupy a knižnice na vykonávanie úloh paralelne alebo súbežne:

  1. Modul threading — na vytváranie vlákien (threads). Vhodné pre úlohy s veľkým počtom vstupov/výstupov, ale neurychľuje CPU-bound úlohy kvôli GIL.

  2. Modul multiprocessing — na vytváranie procesov. Umožňuje obísť GIL a efektívne využívať viac jadier CPU.

  3. Modul asyncio — na asynchrónne programovanie s použitím korutín. Dobré pre veľký počet operácií vstupu/výstupu.

  4. Knižnice vysokého úrovne:

    • concurrent.futures.ThreadPoolExecutor a ProcessPoolExecutor — pohodlné rozhranie na spúšťanie úloh v vláknach alebo procesoch.

Príklad použitia concurrent.futures:

from concurrent.futures import ThreadPoolExecutor

def úloha(n):
    print(f"Úloha {n} sa vykonáva")

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

Výber metódy závisí od typu úlohy: pre CPU-bound — multiprocessing, pre I/O-bound — threading alebo asyncio.