29 Ocak 2009, PERÅžEMBE
Zaman aşımı Python bir işlev çağrısı
Durak ve senaryoyu yeniden başlatmak için zorlayabilir biliyorum ki Python ile bir fonksiyon arıyorum.
Nasıl işlevi arayayım mı yoksa eğer komut iptal eder ve başka bir şey yapar 5 saniyeden daha uzun sürerse o paket ne?
CEVAP
30 Ocak 2009, Cuma
Eğer UNIX üzerinde çalışan iseniz signal Paket kullanabilirsiniz:
In [1]: import signal
# Register an handler for the timeout
In [2]: def handler(signum, frame):
...: print "Forever is over!"
...: raise Exception("end of time")
...:
# This function *may* run for an indetermined time...
In [3]: def loop_forever():
...: import time
...: while 1:
...: print "sec"
...: time.sleep(1)
...:
...:
# Register the signal function handler
In [4]: signal.signal(signal.SIGALRM, handler)
Out[4]: 0
# Define a timeout for your function
In [5]: signal.alarm(10)
Out[5]: 0
In [6]: try:
...: loop_forever()
...: except Exception, exc:
...: print exc
....:
sec
sec
sec
sec
sec
sec
sec
sec
Forever is over!
end of time
# Cancel the timer if the function returned before timeout
# (ok, mine won't but yours maybe will :)
In [7]: signal.alarm(0)
Out[7]: 0
10 saniye görüşme alarm.alarm(10), işleyicisi denir. Bu normal Python kodundan müdahale edebileceğiniz bir özel durum oluşturur.
Bu modül iyi iş parçacıkları (ama kim?) ile oynamıyor
Unutmayınzaman aşımı olduğunda biz bir istisna yükseltmek beri, yakalanıp, böyle bir işlevi örneğin: işlev içinde göz ardı sonunda olabilir
def loop_forever():
while 1:
print 'sec'
try:
time.sleep(10)
except:
continue
Bunu PaylaÅŸ:

Jinja2 python bir işlev çağrısı...
Python sınıf içinde bir işlev çağrısı...
Nasıl python'in soket al yöntemi ...
Nasıl Python ile şimdiki zaman almak i...
Android hata: *yüklemek Başarısız oldu...