Python 3 - Tekrarlanan Fonksiyon?

Selamlar,
Python ile bir otomotize işlemler yapabilecek bir program yazmaya çalışıyorum.

Amaç şu. Fonksiyonu a,x verisi ile çalıştır eğer hata verirse sistemdeki x verisi yerine x’den sonra gelen veriyi y verisini ver. Buradaki a yine değişmeden kalacak ama x verisi yerine y verisi gelecek. Bu arada x,y,z,… bir liste içerisinde.
Bu arada eğer işlem sorunsuz çalışırsan x verisiyle bu sefer a’dan sonra gelen b verisini işleme sok.
Biraz karışık anlattıysam özür dilerim. Bu işlemi nasıl yapabilirim?

def f(a, x):
    ...

l1 = ["a", "b", "c"]
l2 = ["x", "y", "z"]

iter1 = iter(l1)
iter2 = iter(l2)

a, x = next(l1), next(l2)
while True:
    try:
        f(a, x)
    except:
        x = next(l2)
    else:
        a = next(l1)

Burada try-except yerine bir if-else lazım gibi, fonksiyonun hata verip vermeyeceğini hesaplayamıyor musunuz?

1 Beğeni

Ne yazık ki hesaplayamıyorum hocam çünkü timeout (bknz. requests) durumu var.
Eve geçince deneyip size yazacağım. İyi akşamlar şimdilik

Teşekkürler hocam çözümünüz işe yaradı. Şimdi bu kod parçasını geliştirmek istiyorum. Aynı anda aynı fonksiyon birden fazla kez çalışsın istiyorum. Sanırım multithreading oluyor kullanacağımız modül. Peki onu nasıl yapabiliriz bu kod bloğu ile?

Programi ayni anda birden fazla kez calistirabilirsin.

Merhaba,

sanırım adam aynı fonksiyonu birden fazla kez çalıştırmak istiyorum demiş. Aynı programı değil. Ya da kastettiğin şeyi ben anlayamadım.

if(senin_zamanin && ben_yanlış_anladım && açıklamayi_istiyor_musun):
    bana_açıklayabilir_misin?

Ayni programdan birden fazla calisirsa, ayni fonksiyondan da birden fazla calismis olur? (Programin fonksiyonu calistirdigini varsayiyorum.)

@EkremDincel beyden de yararlanarak şöyle bir şey işini görür mü?

from queue import Queue
from threading import Thread

q1 = Queue()
q1.put("a")
q1.put("b")
q1.put("c")

q2 = Queue()
q2.put("x")
q2.put("y")
q2.put("z")

def f(a, x):
    ...

def run_func():
    a, x = q1.get(), q2.get()
    while(true):
        try:
            f(a, x)
        except:
            x = q2.get()
        else:
            a = q1.get()
thread_list = []
n = int(input())
for i in range(n):
    th = Thread(target=run_func)
    thread_list.append(th)
    th.start()

gibi bir şey yapabilirsin. Ama bazı kavramlar belirsiz. mesela

Hangi fonksiyon çalışacak, biraz daha açıklama yapabilir misiniz?

Teşekkürler ben bunu bilmiyordum(!)

Veriler yetersiz olunca müneccimlik yapmak zorunda kalıyoruz.