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:
-
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. -
Modul
multiprocessing— na vytváranie procesov. Umožňuje obísť GIL a efektívne využívať viac jadier CPU. -
Modul
asyncio— na asynchrónne programovanie s použitím korutín. Dobré pre veľký počet operácií vstupu/výstupu. -
Knižnice vysokého úrovne:
concurrent.futures.ThreadPoolExecutoraProcessPoolExecutor— 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.