Junior
Çoxprosessorluq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Python-də çox prosessinq, əməliyyat sisteminin müstəqil bir neçə prosesinin yaradılması və idarə olunması yolu ilə tapşırıqların paralel icrasıdır.
Əsas xüsusiyyətlər:
- Hər bir proses öz yaddaş ünvan sahəsinə malikdir.
- Proseslər arasında məlumat mübadiləsi açıq mexanizmlər (sıralar, borular, ümumi yaddaş) tələb edir.
- CPython-də Global Interpreter Lock (GIL) məhdudiyyətini aşmaq və prosessorların çox nüvəli imkanlarından tam istifadə etmək üçün istifadə olunur.
Üstünlüklər:
- Çox nüvəli sistemlərdə performansı artırır.
- Proseslərin izolyasiyası: bir prosesin uğursuzluğu digərinə təsir etmir.
Əlavələr:
- Resursların daha çox istifadəsi (yaddaş, proseslərin yaradılması və keçid üçün sistem resursları).
- Məlumat mübadiləsi mürəkkəb ola bilər.
multiprocessing modulunda istifadə olunur:
import multiprocessing
import time
def worker(num):
"""Fərqli prosesdə işləyən funksiya"""
print(f"Proses {multiprocessing.current_process().name} başladı, arqument {num} ilə")
time.sleep(1)
print(f"Proses {multiprocessing.current_process().name} tamamlandı")
if __name__ == "__main__":
proseslər = []
for i in range(5):
# Yeni proses yaradılır
p = multiprocessing.Process(target=worker, args=(i,))
proseslər.append(p)
# Prosesi başlat
p.start()
for p in proseslər:
# Prosesi bitməsini gözləyir
p.join()
print("Bütün proseslər tamamlandı.")
Çox ipli (threading) ilə fərqləri:
| Xüsusiyyət | Multiprocessing | Threading |
|---|---|---|
| Yaddaş izolyasiyası | Bəli (ayrı ünvan sahəsi) | Xeyr (ümumi yaddaş) |
| CPU istifadəsi | >1 nüvədən istifadə etməyə imkan verir | GIL ilə məhdudlaşdırılmış (CPU-bound üçün) |
| Əlavə xərclər | Yüksək | Aşağı |
| Məlumat mübadiləsi | Açıq (explicit) | Sadə (ümumi yaddaş) |
Yüksək hesablamalar (CPU-bound) və ya yüksək izolyasiya tələb edən tapşırıqlar üçün istifadə olunur.