🎎Multiprocessing

Python üzerinde paraleli eş zamanlı ve çok çekirdekli işlemler

🆚 Multiprocessing vs Multithreading

  • 🕐 Thread eski bir yapıdır

  • 👮‍♂️ Thread işlemlerinde aynı alana erişim sırasında verilerde sorun olabilir

    • Func1 ile Fun2 A dosyasına erişsin

    • Func1 A'dan 5 değerini çeker

    • Func2 de A'dan 5 değerini çeker (çünkü func1 A dosyasını erişime kapatmaz)

    • Func1 değeri 1 artırır, A'ya 6 yazar

    • Func2 de değeri 1 artırır, A'ya 6 yazar

    • Sonuç olarak A değerinin 7 olması beklenirken, 6 olduğu görülür

    • 👨‍🔧 Çözüm: Multiprocessing

  • 🎳 Multiprocessing, threading'e nazaran daha maliyetlidir, basit işlerde tercih edilmez (overhead)

  • 📈 IO işlemleri için 🧵 Multi-Threading, CPU işlemleri için 🎎 Multi-Processing daha verimlidir

  • 💡 Multiprocessing IO işlemleri için de hızlı olsa da maliyetli olduğundan thread daha uygun seçimdir

🔸 Multithreading, çoklu kullanım anlamına gelirken; multiprocessing, çoklu işleme anlamına gelmektedir

⭐ Multiprocessing Örneği

from multiprocessing import Process


def func1():
    print('func1: starting')
    for i in range(10000000):
        pass
    print('func1: finishing')


def func2():
    print ('func2: starting')
    for i in range(10000000):
        pass
    print ('func2: finishing')


if __name__ == '__main__':
    p1 = Process(target=func1)
    p1.start()
    p2 = Process(target=func2)
    p2.start()
    p1.join() # Process1'in tamamlanmasını beklemek için kullanılır
    p2.join()

# func1: starting
# func2: starting
# func2: finishing
# func1: finishing

🔗 Faydalı Kaynaklar

Last updated

© 2024 ~ Yunus Emre Ak ~ yEmreAk