Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi

Sorunuz mu var? Belki de çoktan soruldu..

0
Python ile multithread uygulama yazmak nasıl oluyor?

Açık 1 Cevaplar 37 Gösterim Python
Selamlar,
Python ile multithread uygulama nasıl yazılıyor? Standard python kütüphanesi multithread destekliyor mu?

Hangi yöntemler mevcut?

1 cevap

0
Python programlama dünyasının anladığı gibi bir thread mekanizmasına sahip değil. Uygulamayı hızlandırmak için thread kullanmak çok tavsiye edilen bir yaklaşım değil. Python Global Interpreter Lock (GIL) adında bir yapıya sahip. Bu yapı bir anda tek bir thread'ın çalışmasını garaktilemek üzere kurgulandırılmıştır. Çok hızlı şekilde yaptığı için yalancı bir multithread yapısı oluşturur ve paralel gibi görünür. Ama temelde CPU birim zamanda tek bir thread için kullanılır ve diğerleri için sıralama sağlanır. GIL çalışma zamanında thread için bazı ekstra yükler getirir. Bu da demek oluyor ki uygulamayı hızlandırmak için thread kullanımı pek de iyi bir çözüm değildir.

Yine de thread kullanmak için bazı sebepler var. Eğer verim temel soru değilse ve aynı anda birkaç işlem yapılacaksa o durumda kullanılabilir. Eğer uygulamanız başka bir işlem için beklemesi gerekiyorsa (disk işlemleri gibi) thread kullanmak mantıklıdır. Akılda kalması gereken thread kütüphanesi CPU üzerindeki çekirdekleri kullanmak için yol değildir. Multithread yapısı için işletim sistemine bu iş gönderilebilir (multiprocessing), başka uygulamalar sizin python kodunuzu çağırabilir (örn, spark, hadoop) ya da sizin python kodunu başka uygulamaları çağırabilir (uygulamanız C ile yazılmış bir fonksiyonu çağırabilir)

Python'un multithreadı desteklemediğini bilmenizde fayda vardır. Yazdıktan sonra bir sürü insan uygulamadaki darboğazları, performans problemlerini incelemeye çalışıp en son GIL yapısını öğreniyor, boşuna zaman kaybı.
(4.3k puan)