Sobes.tech
Middle

wait() funksiyası nədir və Python-da necə istifadə olunur?

sobes.tech Süni İntellekt

AI-dan cavab

wait() funksiyası çoxprosessli, çoxmərhələli və şəbəkə qarşılıqlı əlaqə kontekstində rast gəlinir. Python-un standart kitabxanasında o, ən çox aşağıdakılara aid edilir:

  • subprocess modulu: uşaq prosesinin tamamlanmasını gözləmək.
  • threading modulu: ipin icrasının tamamlanmasını gözləmək.
  • socket modulu: socketdə hadisələri gözləmək (aşağı səviyyəli funksiyalar istifadə edilərkən).

subprocessdə: Popen obyektinin wait() metodu cari proqramın icrasını uşaq proses tamamlanana qədər bloklayır. Uşaq prosesinin çıxış kodunu qaytarır.

// subprocess-də wait() nümunəsi
import subprocess

process = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE)
return_code = process.wait() // Prosesi tamamlanmasını gözləyir
print(f"Proses tamamlandı, geri dönüş kodu: {return_code}")
output, error = process.communicate() // Çıxışı əldə edir
print(output.decode())

threadingdə: Thread obyektinin join() metodu (əsasən, wait()-in ekvivalentidir) cari ipin icrasını, join() çağırılan ip tamamlanana qədər bloklayır.

// threading-də join() nümunəsi
import threading
import time

def worker():
    print("İşçi ip başladı")
    time.sleep(2)
    print("İşçi ip bitdi")

thread = threading.Thread(target=worker)
thread.start()
thread.join() // İşçi ip-in tamamlanmasını gözləyir
print("Əsas ip tamamlandı")

socketdə: Aşağı səviyyəli socketlərdə, select və ya poll istifadə edilərkən, gözləmə anlayışı bu funksiyaların bloklanması ilə həyata keçirilir, bu da monitorinq edilən socketlərdə giriş-çıxış hadisəsi baş verənə qədər davam edir. Birbaşa wait() metodu olmasa da, bu funksiyaların bloklayıcı xarakteri gözləməyə bərabərdir.


Əhəmiyyətlidir ki, wait() (və ya onun analoqları) bloklamağa səbəb olur. asyncio istifadə edilən asinxron proqramlaşdırmada isə başqa gözləmə mexanizmləri, məsələn, await istifadə olunur.