Thread Kavramı ve Python Üzerinde Kullanımı

Önce bazı tanımları kısaca yaparak anlatımı netleştirelim.

Process (İşlem): işletim sistemi üzerinde, bir programlama dili ile hazırlanmış ve hafızaya alınmış çalışan programa denir. Her bir programın sadece bir process’i olmak zorunda değil, başlangıç process’i yeni process’ler üretebilir. İki farklı process’in birbirlerinin verilerine erişmesi güvenlik için kısıtlanmış/zorlaştırılmış olabilir.

Thread (İplik): sözlük anlamı en küçük yürütme birimidir. Her thread, çalışabilmek için yukarıda bahsettiğimiz process’e ihtiyaç duyar.

Bir process birden fazla thread barındırabilir ve bu sayede aynı anda birden çok işlem yapabiliriz. Aynı process üzerindeki thread’lerin o process üzerindeki verilere erişebilmesi bizim için çoklu process yerine çoklu thread açmanın avantajı olur. Bu iki kavram dilden bağımsızdır yani Python’a özel değiller hemen hemen her modern dilde thread ve process kavramları kullanılır.

Çoklu thread veya process açarak çalışmak Python içinde hazır gelen modüller ile çok basit şekilde yapılabilir.

Çoklu thread için threading modülü kullanacağız.

Bu modül içerisinde bulunan Thread sınıfı yeni thread’ler oluşturmamız için gerekli. 2 türlü kullanabiliriz; parametre olarak bir fonksiyon vererek ya da Thread sınıfına bağlı bir alt sınıf oluşturup run metodunu tanımlayarak. İkisini de bir örnek ile görelim.

Her iki yöntemde de start metodunu çağırmamız gerektiği unutulmamalı.
Metot ile kullanımda fonksiyon ismi verdiğimiz target anahtar kelimesi run metoduna çalıştırması gereken fonksiyonu bildirir. Subclass kullanımında ise direk run metodunu yazarız.

Threadler run metodu bitene ya da bir Exception oluşana kadar hayatta kalırlar. is_alive metodu ile bir thread’in hayatta olup olmadığını kontrol edebiliriz.

Kaynaklar;
https://docs.python.org/3.4/library/threading.html
http://ysar.net/python/threading.html
http://www.kadinyazilimci.com/thread-kavrami/
http://bilgisayarkavramlari.sadievrenseker.com/2007/11/18/islem-process/
http://bilgisayarkavramlari.sadievrenseker.com/2010/03/22/thread-iplik/

“Thread Kavramı ve Python Üzerinde Kullanımı” için bir yorum

Bir Cevap Yazın