Python Çoklu İşlem Kuyruğu

Python Coklu Islem Kuyrugu



Veri yapısının en önemli unsuru kuyruktur. Python çoklu işlemenin temeli olan “ilk giren ilk çıkar” veri yapısı kuyruğu karşılaştırılabilir. İşlemin verileri toplamasına izin vermek için işlem işlevine kuyruklar sağlanır. Sıradan elenecek ilk veri öğesi, girilecek ilk öğedir. Verileri kuyruğa eklemek için kuyruğun 'put()' yöntemini ve verileri sıradan almak için 'get()' yöntemini kullanırız.

1. Örnek: Python'da Çoklu İşlem Sırası Oluşturmak için Queue() Yöntemini Kullanma

Bu örnekte Python'da 'queue()' yöntemini kullanarak çok işlemli bir kuyruk oluşturuyoruz. Çoklu işlem, aynı anda iki veya daha fazla işlemi gerçekleştirmek için bir sistemdeki bir veya daha fazla CPU'nun kullanılması anlamına gelir. Python'da yapılandırılmış bir modül olan çoklu işlem, işlemler arasında geçiş yapmayı kolaylaştırır. Çoklu işleme ile çalışmadan önce işlem özelliğine aşina olmalıyız. Kuyruğun veri modelinin çok önemli bir bileşeni olduğunun farkındayız. 'İlk Giren İlk Çıkar' fikri üzerine inşa edilmiş standart veri kuyruğu ve Python çoklu işleme, tam olarak eşdeğerdir. Genel olarak sıra, Python nesnesini depolar ve görevler arasında veri aktarımı için çok önemlidir.







'Spyder' aracı, mevcut Python komut dosyasını uygulamak için kullanılır, bu nedenle hemen başlayalım. Python multiprocessing betiğini çalıştırdığımız için önce multiprocessing modülünü içe aktarmalıyız. Bunu, çoklu işleme modülünü 'm' olarak içe aktararak yaptık. 'm.queue()' tekniğini kullanarak, çok işlemli 'queue()' yöntemini çağırıyoruz. Burada “queue” adında bir değişken oluşturuyoruz ve içine multiprocessing “queue()” methodunu yerleştiriyoruz. Kuyruğun öğeleri 'ilk giren ilk çıkar' düzeninde sakladığını bildiğimiz için, önce eklediğimiz öğe önce kaldırılır. Çoklu işlem kuyruğunu başlattıktan sonra, 'print()' yöntemini çağırıyoruz ve ekranda görüntülemek için argüman olarak 'Bir çoklu işlem kuyruğu var' ifadesini iletiyoruz. Daha sonra oluşturulan kuyruğu bu değişkende sakladığımız için “print()” metodunun parantez içindeki “queue” değişkenini geçirerek kuyruğu yazdırıyoruz.




Aşağıdaki görüntü, Python çoklu işlem sırasının artık oluşturulduğunu göstermektedir. Önce print ifadesi gösterilir. Bu çoklu işlem sırası, belirlenen bellek adresinde oluşturulduktan sonra, iki veya daha fazla çalışan işlem arasında farklı verileri aktarmak için kullanılabilir.







2. Örnek: Python'da Çoklu İşlem Kuyruğunun Boyutunu Belirlemek için 'Qsize()' Yöntemini Kullanma

Bu durumda çoklu işleme kuyruğunun boyutunu belirleriz. Çoklu işlem sırasının boyutunu hesaplamak için “qsize()” yöntemini kullanıyoruz. 'qsize()' işlevi, Python çoklu işlem sırasının gerçek boyutunu döndürür. Başka bir deyişle, bu yöntem bir kuyruktaki toplam öğe sayısını sağlar.

Kodu çalıştırmadan önce Python çoklu işlem modülünü “m” olarak içe aktararak başlayalım. Daha sonra “m.queue()” komutunu kullanarak çoklu işlemli “queue()” fonksiyonunu çağırır ve sonucu “Queue” değişkenine koyarız. Daha sonra “put()” methodunu kullanarak aşağıdaki satırdaki itemleri kuyruğa ekliyoruz. Bu yöntem, verileri bir kuyruğa eklemek için kullanılır. Bu nedenle “put()” metodu ile “Queue” çağırıyoruz ve tamsayı sayıları parantez içinde elemanı olarak veriyoruz. Eklediğimiz sayılar “put()” fonksiyonlarını kullanarak “1”, “2”, “3”, “4”, “5”, “6” ve “7” dir.



Ayrıca, çoklu işlem sırasının boyutunu elde etmek için “Kuyruk” kullanarak, çoklu işlem kuyruğu ile “qsize()” diyoruz. Ardından, yeni oluşturulan 'sonuç' değişkeninde 'qsize()' yönteminin sonucunu kaydederiz. Ardından “print()” methodunu çağırıyoruz ve parametresi olarak “The multiprocessing tail’s size is” ifadesini iletiyoruz. Daha sonra “print()” fonksiyonunda “result” değişkenini çağırıyoruz çünkü boyut bu değişkene kaydediliyor.


Çıktı görüntüsü görüntülenen boyuta sahiptir. Çoklu işlem kuyruğuna yedi öğe eklemek için “put()” işlevini ve boyutu belirlemek için “qsize()” işlevini kullandığımız için, çoklu işlem kuyruğunun boyutu “7” olarak görüntülenir. 'Çoklu işleme kuyruğunun boyutu' giriş ifadesi, boyuttan önce gösterilir.

Örnek 3: Python Çoklu İşlem Kuyruğunda “Put()” ve “Get()” Yöntemini Kullanma

Bu örnekte, Python çoklu işlem kuyruğundan 'put()' ve 'get()' kuyruk yöntemleri kullanılmıştır. Bu örnekte iki kullanıcı tanımlı fonksiyon geliştiriyoruz. Bu örnekte, '5' rasgele tamsayı üreten bir işlem oluşturmak için bir işlev tanımlıyoruz. Bunları bir kuyruğa eklemek için “put()” yöntemini de kullanırız. Öğeleri kuyruğa yerleştirmek için 'put()' yöntemi kullanılır. Daha sonra kuyruktan sayıları almak ve değerlerini döndürmek için başka bir fonksiyon yazıp onu işlem sırasında çağırıyoruz. Sıradan sayıları almak için “get()” fonksiyonunu kullanıyoruz çünkü bu metot “put()” metodunu kullanarak eklediğimiz sıradan verileri almak için kullanılıyor.

Şimdi kodu uygulamaya başlayalım. İlk olarak, bu betiği oluşturan dört kitaplığı içe aktarıyoruz. Saniyelerle ölçülen bir süre için yürütmeyi geciktirmek için önce zaman modülünden 'sleep', ardından rastgele sayılar üretmek için kullanılan rastgele modülden 'rastgele', ardından çoklu işlemden 'işlem' ithal ediyoruz, çünkü bu kod bir süreç oluşturuyor. ve son olarak, çoklu işlemden gelen 'kuyruk'. Başlangıçta bir sınıf örneği oluşturarak kuyruk kullanılabilir. Varsayılan olarak bu, sonsuz bir sıra veya maksimum boyutu olmayan bir sıra oluşturur. Maksimum boyut seçeneğini sıfırdan büyük bir sayıya ayarlayarak, boyut kısıtlamalı bir oluşturma yapmak mümkündür.


Bir fonksiyon tanımlıyoruz. Daha sonra bu fonksiyon kullanıcı tanımlı olduğu için ona “işlev1” adını veriyoruz ve argümanı olarak “kuyruk” terimini geçiyoruz. Ardından, 'print()' işlevini çağırarak 'builder: Running', 'flush' ve nesne 'True' ifadelerini iletiyoruz . Python'un yazdırma işlevi, kullanıcının bu çıktıyı ara belleğe alıp almayacağını seçmesine izin veren, floş adı verilen benzersiz bir seçeneğe sahiptir. Bir sonraki adım, görevi oluşturmaktır. Bunu yapmak için 'for' kullanırız ve 'm' değişkenini oluşturur ve aralığı '5' olarak ayarlarız. Ardından, bir sonraki satırda 'random()'u kullanın ve sonucu, yaptığımız 'değer' değişkeninde saklayın. Bu, fonksiyonun artık beş yinelemesini bitirdiğini ve her yinelemenin 0 ile 5 arasında rastgele bir tamsayı oluşturduğunu gösterir.

Ardından bir sonraki adımda “sleep()” fonksiyonunu çağırıyoruz ve porsiyonu belirli bir saniye kadar geciktirmek için “value” argümanını iletiyoruz. Ardından, esas olarak kuyruğa değer eklemek için 'put()' yöntemiyle 'sırayı' çağırırız. Daha sonra “queue.put()” metodu bir kez daha çağrılarak ve “None” değeri geçirilerek kullanıcıya başka bir iş olmadığı bilgisi verilir. Ardından “print()” methodunu çalıştırıp “builder: ready” ifadesini “flush” ile birlikte geçirip “True” olarak ayarlıyoruz.


Şimdi ikinci bir işlev, 'işlev2' tanımlıyoruz ve 'kuyruk' anahtar sözcüğünü onun argümanı olarak atayacağız. Ardından, 'Kullanıcı: Çalışıyor' ve 'True' olarak ayarlanmış 'flush'  rapor durumlarını geçirirken 'print()' işlevini çağırıyoruz. Sıradan veriyi alıp yeni oluşturulan “item” değişkenine koymak için while true koşulunu kullanarak “function2” işlemini başlatıyoruz. Ardından, koşul doğruysa döngüyü kesmek için 'if' koşulunu, 'item is None' kullanırız. Hiçbir öğe mevcut değilse, durur ve kullanıcıdan bir tane ister. Değerden elde edilen öğe null ise görev döngüyü durdurur ve bu durumda sona erer. Ardından bir sonraki adımda “print()” fonksiyonunu çağırıp “User: ready” raporunu ve “flush=True” parametrelerini ona veriyoruz.


Daha sonra “If-name = main_” kullanarak ana sürece giriyoruz. 'queue()' yöntemini çağırıp 'queue' değişkeninde saklayarak bir kuyruk oluşturuyoruz. Ardından, kullanıcı işlevini “işlev2” olarak adlandırarak bir süreç oluşturuyoruz. Bunun için “process” sınıfı diyoruz. İçinde, süreçteki işlevi çağırmak için “target=function2” ifadesini iletiyoruz, “queue” argümanını iletiyoruz ve “User_process” değişkeninde saklıyoruz. Ardından süreç, 'User_ process' değişkeniyle 'start()' yöntemini çağırarak başlar. Daha sonra aynı işlemi tekrarlayarak process içindeki “function1”i çağırıp “builder process” değişkenine koyuyoruz. Ardından, yürütmeyi beklemek için 'join()' yöntemiyle süreçleri çağırıyoruz.


Artık sunulduğuna göre, çıktıda her iki işlevin ifadelerini görebilirsiniz. Sırasıyla “put()” ve “get()” metodlarını kullanarak eklediğimiz itemleri gösterir.

Çözüm

Bu makalede Python çoklu işlem kuyruğunu öğrendik. Verilen çizimleri kullandık. İlk başta, tail() işlevini kullanarak Python çoklu işlemede bir sıranın nasıl oluşturulacağını açıkladık. Ardından, sıranın . Ayrıca kuyruğun put() ve get() yöntemlerini de kullandık. Zaman modülünün uyku sınıfı ve rasgele modülün rasgele sınıfı son örnekte ele alınmıştır.