Multithreading ve Multiprocessing nedir? Farkları nelerdir?
Herkese merhabalar, bu yazıda sizlerle büyük çaplı yazılım projelerinde çok sık kullanılan iki yapıdan ve bunların farklarından bahsedeceğim. Bunlar Multithreading ve multiprocessing.
Hadi başlayalım.
İlk olarak bu terimlere bi göz atalım
Multithreading nedir ?
Programın çalışması tek bir process üzerinden sağlanırken, bu process üzerinde birden fazla işlem parçacığı çalışmaktadır. Process üzerinde çalışan bu çoklu işlem parçacıkları, asenkron olarak farklı görevleri yerine getirmek için kullanılırlar. Bu sayede birbirlerini beklemesi gerekmeyen işlemlerin, tek bir process üzerinde asenkron olarak gerçekleştirilmeleri sağlanır ve performans arttırılmış olur.
Multiprocessing nedir?
Multiprocessing ise çoklu process anlamına gelmektedir. Programın çalışması için birden fazla işlem çalışmaktadır. Bu işlemler farklı kaynakları kullanmaktadır. Farklı işlemlerin kullanımından kaynaklı programın işlem gücü artmaktadır. Farklı kaynakların kullanılmasıyla programın performansı arttırılmış olur.
O zaman multiprocess tasarımını detaylıca inceleyelim...
Multithreading özellikleri
MultiProcessing ile birden fazla process oluşturularak işlem kapasitesi arttırılır. | MultiThreading ile tek bir process üzerinde birden fazla thread oluşturularak işlem kapasitesi arttırılır |
---|---|
MultiProcessing yapısında birden fazla process çalışır. | MultiThreading ile tek bir process üzerinde birden fazla işlem parçacığı oluşturulur. |
MultiProcessing yapısında birden fazla process oluşturulduğu için BAŞLATILMASI yavaştır ve daha fazla kaynak tüketir. | MultiThreading yapısında tek process oluşturulduğu için daha az kaynak tüketir. |
MultiProcessing yapısında herbir process için ayrı ayrı bellek ve CPU zamanı ayrılır. | MultiThreading yapısında ise bir adet process için bu işlem yapılır ve bütün işlem parçacıkları aynı kaynak üzerinde çalışırlar. |
MultiProcessing ile işlem süresi ciddi olarak kısalır. | MultiThreading ile belli bir miktarda hız kazanılır. |
MultiProcessing yapısında CPU tarafından bütün processlerin aynı anda çalışması sağlanır. | MultiThreading yapısı ile bütün işlem parçacıklarının aynı anda çalışmaları sağlanır. |
Multiprocess yapısının avantajları ve dezavantajları
Multithreading yapısının avantajları ve dezavantajları
Bu yazımızda buraya kadar.
Burak Hamdi TUFAN
Comments
Öncelikle verdiğiniz bilgiler için teşekkürler. Benim üzerinde çalıştığım bir proje var 6 adet IMU sensöründen ivme ve gyro veri alıp kalman filtresinden geçirdikten sonra açı hesabı yapıyorum ve görsel bir arayüzde aynı anda grafiksel olarak çizdiriyorum. Arayüzde istediğim sensörü seçip verileri alıp görselleştiriyorum. Bunu yaparken thread kullandım hem sensör verilerinin alınması ve realtime görselleştirmek için. Bir arayüz daha hazırladım bunda ise tüm sensör verisi alınıp görselleştirilecek şekilde yani sensör seçme işi yok. 6 sensör birde arayüz dersek 7 işlem var. Bunu da thread kullanarak yaptım ama oldukça yavaş hatta bazı sensörlerden veri bile okuyamadım. Burada thread kullandım. Sensörler raspberry pi 4 bağladım spi ile haberleşiyorlar. Raspberyy pi spi kanalı 50khz veri hızına destekliyor. Tek sayfada bu tüm sensör verilerini okuyup görselleştirmek thread le olma imkanı sanırım yok burda multiproses kullanmam lazım. Nasıl bir tavsiyede bulunursunuz bu sorun hakkında. Multiproses de takıldığım nokta işlemcide 4 çekirdek var 7 işlem var bu dağılımı nasıl yapılır. Çekirdek seçmeden bu görev dağılımı otomatik yapılırmı.
-0001/11/30 00:00:00Merhabalar, İlk olarak bildiğim kadarıyla SPI kanalı en az 100Mhz lik bir hız ile çalışmaktadır, Raspberry PI SPI kanalı daha yüksek hızlarda çalışabilecektir. Detaylarıızı bilmiyorum ama concurrent işlemler yapılırken verilerinizi tuttuğunuz yapı parallel işlemleri desteklemiyor olabilir. Mesela Java dilinde bir Hashmap içine birden fazla Thread veri ekleyemez ve çakışırlar. Bunun yerine paralel programming için ConcurrentHashMap kullanılır. Kullandığınız programlama dilinde de bu şekilde bir durum olmuş olabilir. Eğer ekleme kodlarınızı try catch içine yazıp hata alınıyormu diye bi kontrol edin ve eğer bu şekilde bir durum varsa o kullandığınız veri tutma yapısını değiştirebilirsiniz. Normal şartlarda multithreading aynı kaynak kullanılarak işlemleri hızlandırmak içindir.
2022/04/18 07:24:59