funktionen mit timeout
Verfasst: Freitag 3. Juli 2009, 11:25
Liebes Forum,
Ich habe ein paar funktionen, die unter umständen sehr lange dauern. Jetzt möchte ich eine Funktion bauen, die diese funktion ausführt, aber wenn sie mehr als zb. 60 sec. braucht, diese abbricht und einen timeouterror wirft. Das ist mein Code, der leider i-wie nicht klappt:Bin für alle vorschläge offen.
MfG Robin
Ich habe ein paar funktionen, die unter umständen sehr lange dauern. Jetzt möchte ich eine Funktion bauen, die diese funktion ausführt, aber wenn sie mehr als zb. 60 sec. braucht, diese abbricht und einen timeouterror wirft. Das ist mein Code, der leider i-wie nicht klappt:
Code: Alles auswählen
import time, thread
class timeouterror(Exception):
pass
def timeout(times, func, *args, **kwargs):
"time = time in seconds to throw error"
global seconds, running
global func2, update
running = False
seconds = 0
was_running = False
ret = "xxxxxxxxx"
def func2():
global seconds, running
running = True
if args:
a = func (args, kwargs)
else:
a = func ()
running = False
ret = a
was_running = True
def update():
global seconds, running
while 1:
print "not running"
if running:
print seconds, times
if seconds >= times:
ret = False
seconds += 1
time.sleep(1)
print seconds
if was_running == True:
break
thread.start_new_thread(update,tuple())
thread.start_new_thread(func2,tuple())
while ret == "xxxxxxxxx":
pass
print ret
def foo():
time.sleep(10)
if __name__ == '__main__':
timeout(5, foo)
MfG Robin