[Çözüldü] Python sonsuz döngü

Başlatan fghty, 09 Ocak 2013 - 15:45:19

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

fghty

Telefon için yaptığım basit programda sonsuz döngü kullanmam gerekiyor. Ben şimdilik while ile bişeyler yaptım. Kod:

import anydbm
db = anydbm.open("kayıt", "r")

t=db.keys()
sayi=len(t)
while running:
    if sayi>-1:
        yazi=t[sayi-1]+"="+db[t[sayi-1]]
        prit yazi     
        sayi=sayi-1
       
    else:
        sayi=len(t)

Bu kod sizce iyi mi? Veritabanındaki kelimeler okulun=school şeklinde yani sözlük veritabanı. Bunun Dışında döngüllerle ilgili başka sorularımda var. Bide bu kodda ram'i en az nasıl kullanabilirim?
1- For ile sonsuz döngü yapılabilir mi?
2- İteratörlerle sonsuz döngü yapılabilir mi? http://stackoverflow.com/questions/3938927/iterator-iter-function-in-python bu linkteki anlatımla.
3- Eğer while, for ve iteratörlerle sonsuz döngü yapılabiliyorsa hangisini kullanmam iyi olur. Ram en az hangisi yüklenir. Telefonda kulandığım için ram sıkıntı oluyor.

sem

Döngünüz içerisinde hiç bir bekleme metodu/fonksiyonu yok (sleep())... Bu işlemciye çok ağır yük getirir. Her bir iterasyonda uygun bir bekleme süresi koyarsanız ideal olacaktır.


Neden sonsuz döngüye ihtiyaç duyuyorsunuz, olay güdümlü olarak (EDP; event driven programming) bir süreç geliştirirseniz kaynaklarınızı daha iyi kullabailirsiniz.


for ve while döngülerinin işlemciye yüklenmesi pek fark etmeyecektir. Çünkü sonuçta işlemciye yaptırılmak istenen iş aynı, bu döngü kontrolleri bu tarz kaynak kullanımı kontrollerini sağlamazlar. Bunları programcı halletmek zorunda kalır. Fakat dediğim gibi hele ki mobil ortamda çalışıyorsanız olay yakalamaya yönelmenizi tavsiye edeceğim.



".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

fghty

Hocam telefonda çalışan kodları kaldırırken sleep i de kaldırmıştım sonra eklemeyi unutmuşum. Telefonda sleep biraz daha farklı kullanılıyor. Sonsuz döngüden kastım veritabanındaki kelimeler bitince başa dönmesini istediğimden sonsuz döngü yapmaya çalışıyorum. Çıkış fonksiyonu çalıştırınca program kapanıyor. For, while, iteratörleri sormamım nedeni genaratorlerde işleme alınan değer hafızadan siliniyor galiba telefodada generator daha doğrusu yield olmadığından for yada iteratörde de aynı işlem olur mu deye sormuştum.