Python bir fonksiyonun aynı anda kaç kere çalışabileceğini hesaplama

Pythonda kullanıcıdan fonksiyonu threading ile kaç kere çalıştırması gerektiği ile ilgili bir input alıyor bu fonksiyon selenium kullanarak bir forum dolduruyor kullanıcı yüksek bir sayı girerse bilgisayar çökebiliyor. Bunu engellemek için bilgisayarın o fonksiyonu aynı anda kaç kere çalıştığını hesaplayıp ondan büyük bir değer girerse uyarı vermesini istiyorum bunu nasıl yapabilirim? Veya alternatif olarak ne önerirsiniz.

Bunu inputu aldıktan sonra siz max input olarak kaç kullanacaksanız onunla karşılaştırıp uyarabilirsiniz.

İnputu aldınız, şu an threadleri çalıştırmıyorsunuz kullanıcı bir değer girdi. O değer sizin istediğiniz thread sayısından fazla ise zaten uyarırsınız. O anda kaç tane çalıştığı bilgisine neden ihtiyacınız olacak? Çoklu kullanıcı var ve bunlar da thread çalıştırmaya devam mı ediyor o kısmı tam anlamadım.

concurrent.futures — Launching parallel tasks — Python 3.11.3 documentation

Max workers’ı siz seçebiliyorsunuz/sınırlandırabiliyorsunuz.

Yine de çalışan thread sayısını da öğrenmek isterseniz;

threading.active_count()

o anda çalışan thread sayısını döndürecektir.

Worker pool kullanmayi: Isleri bir queue’ya atip cekirdek sayisi kadar filan thread ile queue’dan alip calistirmayi.

Aynı anda kaç kere çalıştığını demişim aynı anda kaç kere çalışabileceğini hesaplayıp demek istemiştim kusura bakmayın yanlış anlatmışım.

Max inputun benim belirlediğim bir şey olmasını istemiyorum adamın bilgisayarı ne kadar kaldırabiliyorsa o kadar olsun istiyorum.

Burada ne demek istediniz hocam anlayamadım biraz yeniyim pek bilmiyorum. Aynı şekilde linkten de bir şey anlayamadım sizce şuanki aşama için ileri seviyemi bunlar ?

Önemli değil, sadece doğru anlamak için sordum. İki durumda farklı yaklaşım gerektiriyor ihtimalleri elemeye çalışıyorum.

İşte bu bir sorun. Başka bir bilgisayarın kaldırabileceği thread sayısını tespit etmek biraz stress testi yada benchmark testi gibidir. Bunu bu yaklaşımla nasıl çözeriz düşünmek lazım.

Sorun değil, seviyeniz de problem değil, sormamın amacı söylediğim gibi ihtimalleri elemek.

Ama şunu söyleyebilirim. Başka bir bilgisayar aynı anda kaç thread çalıştırıp çöküyor bulmak zor bir problem. Yani bir test programı yazmak ve ne tepki verdiğini gözlemlemek gerekir.

Bence ortalama bir değer belirleyip, max değeri buna ayarlamakta fayda var aksi halde her sisteminin gücünü test edecek bir şeyler denemek lazım ki böyle bir şey şu benim aklımda yok.

Tamam hocam benim bilgisayar 15 kaldırıyor ortalamadan daha iyi olduğunu düşünüyorum 10 olarak girerim max değeri. Bu yazılım işini hobi olarak yapıyorum o yüzden sadece yazılıma odaklandım donanım ile alakalı terimlerdir, odur, budur hakkında pek bilgim yok o yüzden önerimde pek çok hata bulunabilir affola. Atıyorum kullanıcı 5 girdi önce şuan işlemci ne kadar kullanılıyor onu hesaplayacak atıyorum 30 (% olarak ama belki olmuyordur görev yöneticisinden biliyorum) ilk threadı çalıştırcak işlemciyi ne kadar kullanıyor onu hesaplayacak atıyorum %45 45-30 1 thread %15 kullanıyormuş başta %30 kullanıyordu pcye birşey olmasın diye 20 daha eklesin %50 100 - 50 = 50 benim programa %50 kalıyor diyecek 50 / 15 = 3 adam girdiğine yanıt olarak Maximum 3 girebilirsiniz diyecek ve yeniden input isteyecek. Umarım anlatabilmişimdir.

Hocam bir de forumdaki diğer gönderilerinizden yola çıkarak yazılım mühendisi olduğunuzu düşünüyorum. Nasıl bir meslek şuan yaşım küçük gelecekte meslek olarak yapılır mı ne gibi zorlukları var tavsiye eder misiniz bu hobiyi mesleğe çevirmeli miyim?

Hiç kafa yormadan aynı sonuca gitmek için zaten thread sayısı aslında işlem hızını artırmaz diyebiiriz. Process olarak ayırırsan belki işlemci kapasitesinin tamamını kullanabilirsin. Yani aslında thread sadece işlem zamanını bölüştürür hızlanma sağlamaz.

Anladım. Bunu yapmak mümkün ama asıl enerjini bu noktaya vermek istermisin bilmem.

Söylediğim gibi, threadler sadece işlem zamanını paylaştırır bir hızlanma sağlamaz. İşletim sistemine göre de priority/öncelikleriyle oynayarak da thread sayısını artırabilir ama az öncelikli çalıştırıldığı için donma olmasını önleyebilirsin.

Bunlar biraz işletim sistemine özel kodlar gerektirir. Uğraşmaya değer mi dersen bence asıl işin bu olmayacaksa değmez, sırf öğrenmek için yapmak istersen onlara da örnekler verebilirim vakit bulursam.

İyi bir meslek/kötü bir meslek. Duvar ustası da kursa gidip yazılımcı olmaya çalışıyor, bilgisayar mühendisi de. Bu nedenle ilerde ne olur bilemem. Ama artık çocuklara bile kodlama eğitimi verdiklerini düşünürsek, yazılım meslek olarak kalsada da yazılım tüketicisi kodlayıclar nedeniyle durum karışık görünüyor.