Sobes.tech
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.