Junior — Middle
Koje metode su implementirane u Pythonu za izvršavanje zadataka paralelno ili konkurentno?
sobes.tech АИ
Одговор од АИ
U Pythonu, koriste se različiti pristupi i biblioteke za izvršavanje zadataka paralelno ili konkurentno:
-
Modul
threading— za kreiranje niti (threads). Pogodno za zadatke sa mnogo ulaza/izlaza, ali ne ubrzava CPU-bound zadatke zbog GIL-a. -
Modul
multiprocessing— za kreiranje procesa. Omogućava zaobilaženje GIL-a i efikasno korišćenje više CPU jezgara. -
Modul
asyncio— za asinhrono programiranje koristeći korutine. Dobro za veliki broj operacija ulaza/izlaza. -
Biblioteke visokog nivoa:
concurrent.futures.ThreadPoolExecutoriProcessPoolExecutor— zgodni interfejsi za pokretanje zadataka u nitima ili procesima.
Primer korišćenja concurrent.futures:
from concurrent.futures import ThreadPoolExecutor
def zadatak(n):
print(f"Zadatak {n} se izvršava")
with ThreadPoolExecutor(max_workers=3) as executor:
for i in range(5):
executor.submit(zadatak, i)
Izbor metode zavisi od tipa zadatka: za CPU-bound — multiprocessing, za I/O-bound — threading ili asyncio.