Genel

Concurrent thread nedir ne zaman nasıl uygulanır?

“Concurrent thread” terimi, birden fazla iş parçasının (thread) aynı anda çalıştığı bir işlem veya yazılım modelini ifade eder. Konu, çoğunlukla çoklu işleme ve paralel işlem yapabilme yeteneği ile ilgilidir.

Thread (iş parçası), bir programın çalışması sırasında yürütülen en küçük işlem birimidir. Concurrent threads (eşzamanlı iş parçaları), aynı anda birden fazla işin çalışmasını sağlayan ve işlemci kaynaklarını verimli şekilde kullanan bir yapıdır.

Konseptin özeti:

  • Eşzamanlılık (Concurrency): Aynı anda birden fazla işin çalıştığı, ancak bu işlerin her biri tam olarak aynı anda çalışmayabilir. Yani, iş parçaları sırayla çalışabilir, ancak birbirlerinin işlem sürelerine müdahale etmeyebilir.
  • Paralellik (Parallelism): Gerçekten aynı anda birden fazla işin çalışmasıdır ve genellikle çok çekirdekli işlemcilerde kullanılır.

Bu bağlamda, bir yazılımda birden fazla concurrent thread olduğunda, bu iş parçaları birbiriyle zaman diliminde veya paralel olarak çalışabilir, böylece daha verimli işlem yapılabilir. Bu tür yapılar genellikle daha hızlı işlem yapabilmek ve kullanıcı deneyimini iyileştirmek için kullanılır.


Senaryo: Web Scraping ile Veri Toplama

Bir web sitesi üzerinden farklı sayfalardan eşzamanlı olarak veri toplamak istiyoruz. Tek bir thread kullanılırsa her sayfanın indirilmesi sırasıyla gerçekleşir ve bu süreç yavaş olabilir. Ancak, çoklu iş parçacığı kullanarak bu süreci hızlandırabiliriz.


Araçlar

  • Python programlama dili
  • threading modülü: Python’da çoklu iş parçacığı (multithreading) için kullanılır.
  • requests ve time modülleri: Web istekleri göndermek ve zaman ölçümleri yapmak için.

Kod Örneği

import threading
import requests
import time

# Örnek bir web sayfasından veri toplayan işlev
def fetch_data(url):
    print(f"Başlıyor: {url}")
    response = requests.get(url)
    print(f"Tamamlandı: {url} - Veri Boyutu: {len(response.content)}")

# İşlenecek URL'ler
urls = [
    "https://jsonplaceholder.typicode.com/posts",
    "https://jsonplaceholder.typicode.com/comments",
    "https://jsonplaceholder.typicode.com/albums",
    "https://jsonplaceholder.typicode.com/photos",
    "https://jsonplaceholder.typicode.com/todos",
]

# Başlangıç zamanı
start_time = time.time()

# Thread'leri başlat
threads = []
for url in urls:
    thread = threading.Thread(target=fetch_data, args=(url,))
    threads.append(thread)
    thread.start()

# Tüm thread'lerin bitmesini bekle
for thread in threads:
    thread.join()

# Toplam süre
end_time = time.time()
print(f"Toplam Süre: {end_time - start_time:.2f} saniye")

Kodun Çalışma Mantığı

  1. fetch_data Fonksiyonu: Her bir URL’yi indirir ve boyutunu ekrana yazdırır.
  2. threading.Thread: Her URL için bir thread oluşturulur ve bu thread’ler aynı anda çalıştırılır.
  3. start(): Her bir thread başlatılır.
  4. join(): Tüm thread’lerin tamamlanması beklenir.
  5. Zaman Ölçümü: Başlangıç ve bitiş süreleri arasındaki fark, sürecin ne kadar sürdüğünü gösterir.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu