Sobes.tech
Middle

Asenkronluk ile çok iş parçacıklı olma arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Eşzamansızlık ve çok iş parçacığı, paralel görevleri yürütmek için yaklaşımlardır.

  • Çok iş parçacığı (multithreading), aynı süreç içinde birkaç iş parçacığı oluşturmayı ve çalıştırmayı içerir. İş parçacıkları paralel (çok çekirdekli sistemlerde) veya sözde-paralel (tek çekirdekli sistemlerde bağlam değişimi yoluyla) çalıştırılır. CPU yoğun görevler için uygundur.

    import threading
    import time
    
    def task(name):
        # İş simülasyonu
        time.sleep(1)
        print(f"İş parçacığı {name} tamamlandı")
    
    threads = []
    for i in range(3):
        thread = threading.Thread(target=task, args=(i,))
        threads.append(thread)
        thread.start() # İş parçacığını başlat
    
    for thread in threads:
        thread.join() # İş parçacığının tamamlanmasını bekle
    
    print("Tüm iş parçacıkları tamamlandı")
    
  • Eşzamansızlık (asynchronous), tek bir yürütme iş parçacığı (veya az sayıda) kullanmaya dayanır ve olay odaklı mimari ile çalışır. Engelleyici bir işlemin (örneğin, giriş-çıkış) tamamlanmasını beklemek yerine, görev "kontrolü devralır" ve diğer görevlerin çalışmasına izin verir, sonra işlem tamamlandığında "devam eder". I/O-bound görevler için uygundur.

    import asyncio
    import time
    
    async def async_task(name):
        # Bir asenkron engelleyici işlem simülasyonu (örneğin, ağ isteği)
        await asyncio.sleep(1)
        print(f"Asenkron görev {name} tamamlandı")
    
    async def main():
        tasks = []
        for i in range(3):
            task = asyncio.create_task(async_task(i))
            tasks.append(task)
    
        await asyncio.gather(*tasks) # Asenkron görevlerin tamamlanmasını bekle
    
    if __name__ == "__main__":
        asyncio.run(main())
        print("Tüm asenkron görevler tamamlandı")
    

Ana farklar:

Aç aspect Çok iş parçacığı (Threading) Eşzamansızlık (Asyncio)
Yürütme Birden fazla iş parçacığı, paralel veya sözde-paralel Genellikle tek iş parçacığı ile görev değişimi
Model İşletim sistemi iş parçacıklarına dayanır, kesintili çoklu görev Olay döngüsüne dayanır, kooperatif çoklu görev
Karmaşıklık İş parçacığı yönetimi, kilitler, GIL (Python'da) Koroutine yönetimi, await/async
Kullanım CPU-bound görevler I/O-bound görevler
GIL (Python) CPU-bound kod için gerçek paralelliği sınırlar I/O-bound görevler için sorun değildir