Python'da Çoklu İşlem ve Paralel Programlama
1. Giriş
Günümüzde bilgisayar sistemleri, artan işlem gücü ihtiyaçlarını karşılamak için çok çekirdekli işlemciler ve paralel hesaplama mimarileri kullanmaktadır. Python, çoklu işlem (multiprocessing) ve paralel programlama desteği sunarak geliştiricilere işlem yüklerini verimli bir şekilde dağıtma imkanı tanır.
![]() |
Python Programlama - TekNo Gen TR |
Bu makalede Python'da çoklu işlem ve paralel programlamanın temelleri, avantajları, kullanılan kütüphaneler ve uygulama örnekleri ele alınacaktır.
2. Paralel Programlama ve Çoklu İşlem Kavramları
Paralel programlama, bir işlemi birden fazla alt göreve bölerek aynı anda çalıştırma yöntemidir. Bu, hesaplama sürelerini kısaltarak işlem verimliliğini artırır. Python'da paralel programlama iki ana başlık altında ele alınabilir:
- Çoklu İşlem (Multiprocessing): İşlemler (process) arasında görev paylaşımı yaparak çok çekirdekli sistemlerden yararlanmayı sağlar.
- Çoklu İplik (Multithreading): Aynı süreç içerisinde birden fazla iş parçacığının (thread) çalışmasını sağlar. Ancak Python'un Global Interpreter Lock (GIL) sınırlamaları nedeniyle CPU ağırlıklı işlemler için sınırlıdır.
3. Python'da Multiprocessing Modülü
Python’un multiprocessing
modülü, bağımsız süreçler oluşturup çalıştırarak paralel işlem yapılmasını sağlar. multiprocessing
modülünün temel bileşenleri şunlardır:
- Process: Yeni bir işlem başlatmak için kullanılır.
- Pool: İşlemleri bir havuza dağıtarak yönetir.
- Queue: İşlemler arası veri paylaşımı sağlar.
- Pipe: İşlemler arası iletişimi kolaylaştırır.
3.1. Basit Multiprocessing Örneği
import multiprocessing
def kare_al(sayi):
print(f'{sayi} sayısının karesi: {sayi**2}')
if __name__ == "__main__":
sayilar = [1, 2, 3, 4, 5]
processler = []
for sayi in sayilar:
p = multiprocessing.Process(target=kare_al, args=(sayi,))
processler.append(p)
p.start()
for p in processler:
p.join()
Bu kod, her bir sayının karesini hesaplayan ayrı işlemler başlatır ve işlemlerin tamamlanmasını bekler.
4. Python'da Threading Modülü ve GIL Kısıtlamaları
Python'un threading
modülü, I/O tabanlı işlemler için uygundur ancak GIL (Global Interpreter Lock) nedeniyle CPU yoğun işlemlerde verimli değildir. Örneğin, aşağıdaki kod çok iş parçacıklı (multi-threaded) bir programdır:
import threading
def yazdir(mesaj):
print(mesaj)
thread1 = threading.Thread(target=yazdir, args=("Merhaba, dünya!",))
thread2 = threading.Thread(target=yazdir, args=("Python'da paralel programlama",))
thread1.start()
thread2.start()
thread1.join()
thread2.join()
Bu kod, iş parçacıkları kullanarak iki farklı mesajı aynı anda yazdırmaya çalışır.
5. Parallel Processing İçin Alternatif Kütüphaneler
Python'da çoklu işlem ve paralel programlama için kullanılan bazı kütüphaneler şunlardır:
- Dask: Büyük veri işlemleri için uygundur ve Pandas gibi kütüphanelerle entegre çalışır.
- Joblib: Büyük ölçekli veri işleme görevleri için verimli bir arayüz sunar.
- Ray: Dağıtık sistemlerde paralel işlem yürütmek için kullanılır.
- Numba: CPU ve GPU optimizasyonlarıyla bilimsel hesaplamalarda hız kazandırır.
6. Paralel Hesaplama Örneği: Joblib Kullanımı
Joblib, özellikle veri analizi ve makine öğrenimi uygulamalarında sıkça kullanılan bir kütüphanedir. Aşağıdaki örnek, Joblib kullanarak bir fonksiyonun paralel çalıştırılmasını gösterir:
from joblib import Parallel, delayed
import time
def uzun_sureli_islem(n):
time.sleep(2)
return n ** 2
sonuclar = Parallel(n_jobs=4)(delayed(uzun_sureli_islem)(i) for i in range(5))
print(sonuclar)
Bu kod, beş farklı işlemi dört iş parçacığında paralel olarak çalıştırarak hesaplama süresini azaltır.
7. Çoklu İşlem ve Paralel Programlamanın Avantajları ve Dezavantajları
7.1. Avantajlar
- İşlem süresini kısaltır: Büyük veri setleri ve karmaşık hesaplamalar daha hızlı tamamlanır.
- Çok çekirdekli işlemcilerden faydalanır: CPU'nun tüm çekirdekleri verimli şekilde kullanılır.
- Ölçeklenebilirlik: Dağıtık sistemler üzerinde büyük ölçekli hesaplamalar yapılabilir.
7.2. Dezavantajlar
- GIL kısıtlamaları: Python’un Global Interpreter Lock mekanizması, bazı işlemlerde verimliliği düşürebilir.
- Daha karmaşık hata ayıklama: Paralel programlarda hata ayıklamak ve hata yönetimi daha zordur.
- Yüksek bellek tüketimi: Çok sayıda işlem başlatmak, bellek kullanımını artırabilir.
8. Sonuç
Python’da çoklu işlem ve paralel programlama, büyük veri analizi, yapay zeka, görüntü işleme gibi alanlarda büyük avantajlar sağlamaktadır. multiprocessing
, threading
, joblib
, Dask
ve Ray
gibi kütüphaneler kullanılarak farklı senaryolara uygun paralel işlemler gerçekleştirilebilir. Ancak, her yöntemin kendine özgü avantajları ve dezavantajları olduğu unutulmamalıdır. Etkili paralel programlama için, işlem türüne en uygun yöntemin seçilmesi kritik öneme sahiptir.
9. Kaynakça
- McKinney, W. (2017). Python for Data Analysis. O'Reilly Media.
- Van Rossum, G., & Drake, F. L. (2009). The Python Language Reference Manual. Network Theory Ltd.
- Beazley, D. (2009). Python Concurrency with Multiprocessing and Threading. O'Reilly Media.
- https://docs.python.org/3/library/multiprocessing.html
- https://joblib.readthedocs.io/
- https://dask.org/
10. Kaynak: (TekNo.Gen.TR)
Bu doküman, platformumuzun uzman editörleri tarafından özenle hazırlanarak titizlikle derlenmiştir. İçerik, alanında deneyimli profesyonellerin katkılarıyla, en güncel bilgilere ve kaynaklara dayanarak oluşturulmuştur.
![]() |
Python Programlama - TekNo Gen TR |
![]() |
Python Programlama - Ak Web TR |
Ak.Web.TR, Python Programlama alanında kapsamlı eğitimler sunarak, katılımcıların yazılım geliştirme becerilerini ileriye taşımasına yardımcı olmaktadır. Python'un basit ve etkili yapısı, hem yeni başlayanlar hem de deneyimli yazılımcılar için ideal bir dil olmasını sağlar. Eğitimlerimiz, veri analitiği, yapay zeka, web geliştirme ve otomasyon gibi geniş alanlarda derinlemesine bilgi edinmenizi sağlar. Python programlamada temel kavramlardan ileri düzey tekniklere kadar geniş bir yelpazede içerik sunan kurslarımız, katılımcılara sektördeki en güncel bilgileri öğretmek amacıyla tasarlanmıştır.
Ak.Web.TR ile Python öğrenerek, yazılım dünyasında güçlü bir kariyer temeli oluşturabilirsiniz.