Python Threading ile Otomasyon

0 Replies 3 Views
·
Participants
Thread Starter #1
Giriş ve Temel Kavramlar
Python'da otomasyon projelerinde zaman zaman birden fazla görevi aynı anda yürütmek gerekebilir. Bu noktada threading (iş parçacığı) modülü devreye girer. Threading, özellikle I/O-bound işlemlerinde (dosya okuma/yazma, web istekleri vs.) kodun performansını artırmak ve kaynakların daha etkin kullanımı için oldukça etkilidir.

Threading'in temel mantığı, ana program akışını bloklamadan, aynı anda birkaç işlemi yürütmeye olanak tanımaktır. Örneğin, dosya indirme, veri toplama veya ekran güncellemeleri gibi zaman alan işlemlerini arka planda çalıştırıp, kullanıcı etkileşimini kesintiye uğratmadan otomasyon süreçlerini yönetebilirsiniz.

Threading Kullanım Alanları ve Avantajları
Özellikle web scraping, API çağrıları ve veri toplama gibi I/O ağırlıklı otomasyonlarda threading büyük fark yaratır. Bu sayede, örneğin 10 API çağrısını sırayla yapmak yerine, bunları aynı anda başlatıp, tamamlanmasını beklerken diğer işlemleri sürdürebilirsiniz. Bu, toplam zamanın önemli ölçüde azalmasını sağlar.

Ancak threading, CPU-bound (işlemci yoğun) işlemlerinde sınırlı kalır; Python'un Global Interpreter Lock (GIL) nedeniyle, aynı anda birkaç işlem sadece tek bir çekirdekte yürütülür. Bu yüzden, CPU-bound görevler için multiprocessing modülü daha uygun olur.

Pratik Bir Örnek ve İpuçları
Basit bir örnekle, birkaç web sayfasını paralel olarak indiren kodu inceleyebiliriz:

CODE
1234567891011121314151617181920212223  
import threading  
import requests  

def fetch_url(url):  
    response = requests.get(url)  
    print(f"{url} indirme tamamlandı, boyut: {len(response.content)} bytes")  

urls = [  
    "https://example.com",  
    "https://openai.com",  
    "https://github.com"  
]  

threads = []  
for url in urls:  
    t = threading.Thread(target=fetch_url, args=(url,))  
    threads.append(t)  
    t.start()  

for t in threads:  
    t.join()  
print("Tüm işlemler tamamlandı.")  


Burada, her URL için ayrı bir thread başlatılır ve hepsi paralel şekilde çalışıp, sonunda tamamlanır. Bu metot, özellikle zaman duyarlı otomasyon projelerinde verimliliği artırır.

Sonuç olarak, threading, otomasyon süreçlerinde zaman ve kaynak yönetimini optimize etmek için güçlü bir araçtır; ancak doğru kullanım ve sınırlamaları bilinmeden kullanımı hatalara veya performans sorunlarına yol açabilir. Threading ve diğer çoklu işlem tekniklerini, proje ihtiyaçlarına göre dikkatli seçmek ve uygulamak gerekir.

You must be logged in to reply.

0 quotes selected