Wie machen Sie eine Aktion passieren jede minute in Python
Ich möchte hinzufügen 1 um eine variable, jede minute, ohne sich mit dem code, der bereits ausgeführt wird.
Es ist ein Spiel, also will ich im hintergrund für Holz+1 rock+1, Fischen+1 zu passieren, jede minute ohne den Benutzer zu wissen.
Zeit.schlafen wird nicht funktionieren, in dieser situation, denn es hält das ganze Programm.
start=time.time()
#some code
end=time.time()
if end-start > 60:
wood = wood+1
rock = rock+1
Ich habe versucht, etwas zu tun oben, aber konnte es nicht ständig zu zählen. Es nur misst, wie lange es dauert, für #einige code ausgeführt werden kann.
Jede Hilfe würde groß sein! Vielen Dank im Voraus.
- Verwandte: Python-Äquivalent von setInterval()?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie es importieren thread Modul und die itertools (zusätzlich zu svks' Kommentar) in python
initialisieren Ihrer threadsicher Zähler wie
und schreiben Sie Ihre counter-update in eine Funktion
und kick-off einen neuen thread mit
Aber die ressource Variablen wie Holz werden müssen, zugänglich von innerhalb der Funktion counter!
thread
Modul direkt verwendenthreading
Modul statt:Thread(target=updateCounter).start()
Hier ist eine Antwort, die nicht die threads, da die threads kann schwierig sein, um richtig zu machen. (Wenn Sie benutzen Sie threads Lesen müssen, bis auf die Synchronisation zwischen threads, oder Sie können Gefahr laufen, in die subtilen Fehler.)
Werden Sie wahrscheinlich haben eine Art "main-loop". Vielleicht sieht es etwas wie dieses, derzeit:
Es gibt nichts Magisches an der main-Schleife-Sie können Dinge tun, neben der Verarbeitung der Eingabe und die Malerei auf den Bildschirm hier. Wenn Sie möchten, etwas zu laufen, einmal pro minute, können Sie einfach etwas wie das hier tun:
Wenn Sie bestimmte Bibliotheken werden Ihre Haupt-Schleife versteckt sich in der Bibliothek. In diesem Fall sind Sie wahrscheinlich starten Sie Ihr Spiel mehr oder weniger so:
Wenn dies der Fall ist, wird es wahrscheinlich eine Funktion in der Bibliothek, um etwas zu tun, die gleichwertig zu der oben genannten -- Einstellung von code zum ausführen entweder jeder so oft oder in festgelegten Intervallen. Suchen Sie entweder "idle-Funktion" oder "Timer".
Dazu benötigen Sie separate threads, die verantwortlich für das Inkrementieren der Zähler. Aber bitte denken Sie daran, dass die Einführung von threads, um jedes Programm macht es komplizierter. Bitte threading-docs für details.
Auch Sie sind sich nicht sicher, dass bestimmten thread erhalten Prozessorzeit pro Sekunde, können Sie davon ausgehen, dass, aber Sie sind sich nicht sicher.
wird es laufen alle 60 Sekunden.