Python Queue ile Paralel İşlem Nasıl Yapılır?

0 Replies 3 Views
·
Participants
Thread Starter #1
Python’da Queue Kullanarak Paralel İşlem Nasıl Gerçekleştirilir?

Python programlama dilinde eş zamanlı ve çoklu işlem yapmak, özellikle zaman alan veya yoğun hesaplama gerektiren görevlerde performansı artırmak için tercih edilen bir yöntemdir. Bu noktada, Queue modülü, özellikle Thread ve Process modülleriyle birlikte kullanıldığında, görevlerin güvenli ve düzenli şekilde paylaşılmasını sağlar.

Öncelikle, Queue'nun temel avantajlarından biri, thread veya processler arasında veri paylaşımını senkronize hale getirmesidir. Bu sayede, birden çok iş parçacığı veya süreç, ortak bir kuyruğa erişirken veri bütünlüğü korunur ve race condition gibi sorunlar önlenir.

Örneğin, çoklu işlem gerçekleştirilirken, ana işlev, belirli görevleri küçük parçalara bölüp Queue'ya ekler. İş parçacıkları veya süreçler ise bu kuyruktan görevleri alıp işler. Bu mimari, özellikle web kazıyıcılar, dosya dönüştürme veya hesaplama işlemlerinde yaygın kullanılır.

Aşağıda, temel bir örnekle anlatmak gerekirse:
  • Ana süreç, 1’den 100’e kadar sayıları Queue’ya ekler.
  • 4 adet worker process veya thread, sırayla bu sayıların karelerini hesaplar ve sonucu başka bir Queue’ya ekler.


Bu yaklaşım, işlemi paralel hale getirerek toplam sürenin kısalmasını sağlar. Ayrıca, Queue kullanımı, görevlerin düzgün sırayla ve güvenle alınmasını temin eder.

İşte temel bir kod örneği:

CODE
1234567891011121314151617181920212223242526272829303132  
from multiprocessing import Process, Queue  

def worker(input_queue, output_queue):  
    while not input_queue.empty():  
        number = input_queue.get()  
        result = number * number  
        output_queue.put((number, result))  

if [b]name[/b] == '[b]main[/b]':  
    task_queue = Queue()  
    result_queue = Queue()  
  
    # Görevleri kuyruklara ekle  
    for i in range(1, 101):  
        task_queue.put(i)  
  
    # Worker'ları başlat  
    processes = []  
    for _ in range(4):  
        p = Process(target=worker, args=(task_queue, result_queue))  
        p.start()  
        processes.append(p)  
  
    # İşlemleri tamamla  
    for p in processes:  
        p.join()  
  
    # Sonuçları yazdır  
    while not result_queue.empty():  
        num, square = result_queue.get()  
        print(f"{num}^2 = {square}")  


Bu yapı, hem işlem güvenliğini sağlar hem de işlemler arasında veri paylaşımını kolaylaştırır. Ayrıca, ihtiyaç duyulursa, Queue üzerindeki görevlerin sıralaması ve senkronizasyonu da kontrol edilebilir.

Paralel işlemler ve Queue kullanımı, Python’un sınırlarını biraz aşmak ve performansı artırmak için güçlü bir yöntemdir. Bu konuda deneyimlerinizi veya ek uygulama örneklerinizi paylaşmak, diğer kullanıcılar için oldukça faydalı olacaktır.

You must be logged in to reply.

0 quotes selected