- 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.
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.
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.
Bu kodlamada belirlediğim siteleri ne kadar sürede okuyacağımı belirledim. Sonucumuza bakalım.
Evet arkadaşlar siteleri hangi sürede okuduğunı gösterdi. Şimdi Threading modülümüz ile bakalım.
Ş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.
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.
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.
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.
Bu kodlamada belirlediğim siteleri ne kadar sürede okuyacağımı belirledim. Sonucumuza bakalım.
Evet arkadaşlar siteleri hangi sürede okuduğunı gösterdi. Şimdi Threading modülümüz ile bakalım.
Ş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.