2012-03-27 4 views
1

ich auf diesen Thread kam, als ich nach einer Lösung suchen, aber es tut nicht ganz das, was ich brauche, um es zu:ausführen Funktion jeder x Anzahl der secods Python

What is the best way to repeatedly execute a function every x seconds in Python?

eigentlich gut „funktioniert "(oder zumindest die erste Lösung), aber Sie können es nicht gleichzeitig mit dem Rest des Skripts tun.

Grundsätzlich, ich brauche eine Funktion wie folgt auszuführen:

def functionName(): 
     print "text" 

Ich brauche dies jeden auszuführen, sagen, 100 Millisekunden. Aber ich brauche diese while-Schleife gleichzeitig Looping werden:

while True: 
     for event in pygame.event.get(): 
      if event.type == QUIT: 
       pygame.quit() 
       sys.exit() 

Wie würde ich über diese gehen?

Danke!

+0

Haben Sie sich [threading] (http://docs.python.org/library/threading.html) angesehen? – bereal

+0

mögliche Duplikate von [Was ist der beste Weg, um eine Funktion alle x Sekunden wiederholt in Python auszuführen?] (Http://stackoverflow.com/questions/474528/what-ist-the-best-way-to-repeatedly-execute -a-function-alle-x-Sekunden-in-Python) – bernie

Antwort

3

Sollte nicht diese Arbeit: http://www.pygame.org/docs/ref/time.html#pygame.time.set_timer

pygame.init() 
pygame.time.set_timer(USEREVENT + 1, 100) 
while True: 
    for event in pygame.event.get(): 
     if event.type == USEREVENT + 1: 
      functionName() 
     if event.type == QUIT: 
      pygame.quite() 
      sys.exit() 
+0

Vielleicht möchten Sie ein Beispiel freigeben. – danihp

+0

@danihp: Ich habe ein Beispiel aus den Kommentaren in der Dokumentation hinzugefügt. –

+0

Ja, ich sah das früher und dachte, es hat nicht funktioniert. es tut es tatsächlich. Verdammt, dieses Forum funktioniert gut ... – maxhud

0

Dies kann durch ein Gewinde und mit Hilfe der wait() Funktion erfolgen, so dass es nach jeder wait() Funktion druckt :) Wenn Sie auf Themen Hilfe benötigen, schauen Sie bitte in der offiziellen Dokumentation für Hilfe oder schauen/fragen Sie nach einer anderen Frage zum Überlauf. Prost :)

0

Sie können wahrscheinlich installieren Sie die Funktion als Signalhandler und signal.setitimer verwenden. Wenn du auf Unix stehst, ist das ... Dann gibt es Threads und so.

Verwandte Themen