Python Threading Modülü / Arge Kulübü

Ceen

Üye
29 Tem 2017
219
0
THREADİNG MODÜLÜ

Nasıl İndirilir?

Arkadaşlar ben python 2.7 de çalışıyorum. Ve python bu modülü kendi yapısında barındırmaktadır. Yani indirilecek bir şey yok :).

Giriş

Python'da bir çok paralel işlem yapmayı sağlar. Thread'lar aynı işlem içerisinden,bir kaç daldan çalışırlar. Yani aynı hafızayı ve kaynağı kullanır. Birkaç farklı thread'lar aynı veri üzerinden çalışabilir.

Thread(iplik): En küçük yürütme birimidir. Her thread çalışabilmek için process 'e ihtiyaç duyar.

Process: İşletim sistemi üzerinde, bir programlama dili ile hazırlanmış ve hafızaya alınmış çalışan programa denir. Bu sayede aynı anda birden fazla işlem yapılabilir. Dilerseniz örnekle başlayalım.


PNqBAT.png


Bu kodu çalıştırdığınız takdirde do re mi nota ları belli süre aralıklarında sonsuza kadar çıkacaktır. İlk önce sleep,thread fonksiyonlarını içe aktardım. Daha sonra repeat adlı bir fonksiyon tanımladım. Peki bu fonksiyon ne işe yarıyor? Şöyle söylim do,re,mi notalarını verdiğim süre içerisinde sonsuz bir şekilde tekrarlamasını sağlar. Daha sonra 3 adet Thread oluşturdum. Bunlarıda notalara atayıp hangi zaman aralığında tekrarlanacağını belirledim. En son ise notaları çalıştığı kısım. start() metodunu kullanmadan başlatırsanız başlamayacaktır. Başlaması için bu metoddan faydalanıyoruz. Threading modülü, threadler arası zamanlamayı ayarlamak için Lock() ve Event() sınıfları gibi temel yöntemlere sahiptir. Ama daha çok Queue(sıra) yöntemini kullanmayı tercih eder. Bu yöntem hem daha kolay hem de daha güvenilirdir. Bu sayede daha temiz ve anlaşılır bir şekilde çalışılmış olunur. Dilerseniz sonucumuza bakalım.

pYiwcW.png


Gördüğünüz gibi belirlediğim 3 nota belirli zaman aralığında sonsuz bir şekilde döndürdü. Şimdi daha farklı bir şey deneyelim. Bir web sayfası okuyucusu yapalım. İlk threading modülünü kullanmadan yapacağım. Bunun için urllib ve time modülünden yararlanacağım.

V3Efo8.png


Bu kodlamada belirlediğim siteleri ne kadar sürede okuyacağımı belirledim. Sonucumuza bakalım.

fxRlFB.png


Evet arkadaşlar siteleri hangi sürede okuduğunı gösterdi. Şimdi Threading modülümüz ile bakalım.

EGlQMF.png


Şimdi ilk olarak Queue modümüze bakalım. Bu modül elimizdeki işleri tutacak ve istendikçe iş verecek. Bunu must adında bir değişkene atadık. reading_site adlı bir fonksiyon oluşturduk. Ve argüman olarak bir Queue objesi aldı. Bu objeden iş almak için get () metodunu kullandık. Bu metot sıradaki işi döndürür. Daha sonra taske_done() metodu ile işin bittiğini Queuemodülüne haber veriyor. Daha sonra for döngüsü ile 5 adet thread oluşturduk. Argüman olarak da must objesini verdik. Bu sayede hepsini aynı iş topluluğundan iş alacak. Ayrıca threadlara daemon özelliği vererek Tue olarak ayarladık. Bu sayede threadlar sonlandığında programın kapanmasını sağlayacak. Bir for döngüsü ile daha elimizdeki siteleri must objesine atadık. Queue modülüne iş eklemek için put() metodunu kullandık. join() metodu ile elimizdeki işlerin sonlanmasını bekledik. Bu sayede Queue'ler ve threadlar ile çok temiz bir şekilde çalıştık. Ve birden fazla thread ile Queue modülünü aynı anda kullanabildik. Sonucumuza bakalım.

77cJo9.png
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.