Loop in Python

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Hypec
User
Beiträge: 183
Registriert: Mittwoch 1. August 2018, 16:11

Hallo,
ich will das meine Program alle 30 sekunden einmal durchlaufen wird. Gibt es da etwas wie in C "void loop"? Mir fällt außer einer endlosen do while Schleife momentan nichts ein. Das Intervall in dem das Programm durchlaufen wird kann sich auch noch verändern.
nezzcarth
User
Beiträge: 1757
Registriert: Samstag 16. April 2011, 12:47

Eine Endlosschleife ('while True:') in Verbindung mit 'time.sleep' wäre denke ich die übliche Lösung. Das Argument, das time bekommt, kannst du ja dynamisch anpassen. Wenn es um das Programm selbst geht, können auch übergeordnete Dienste wie Cron oder Systemd Timer unter Unix eine Möglichkeit sein. Cron z.B. kennt als niedrigste Auflösung Minuten, das fällt also raus.
Benutzeravatar
__blackjack__
User
Beiträge: 14040
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Hypec: Was ist eine „void loop“ in C? Ich kenne da nur ebenfalls eine ``while (true) {…}``-Schleife, oder eine ``for``-Schleife ohne Initialisierung/Test/Aktualisierung (``for (;;) {…}``) oder einen unbedingten Sprung (``goto``). Die letzten beiden Konstrukte gibt es in Python nicht. ``for``-Schleifen in Python sind „for each“-Schleifen, die es in C nicht gibt.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
Hypec
User
Beiträge: 183
Registriert: Mittwoch 1. August 2018, 16:11

Beim Arduino welcher ja auch in C programmiert wird gibt es doch eine loop funktion welche sich dauerhaft wiederholt.
Doch Crontab ist eine gute Lösung im 1 Minuten Takt das reicht mir aus, vielen dank für die Hilfe. Wenn das nicht klappen sollte probiere ich die while True schleife.
Benutzeravatar
__blackjack__
User
Beiträge: 14040
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Hypec: Der Arduino wird in C++ programmiert. Das ist aber nicht C++ sondern die Arduino Laufzeitumgebung. Man kann weder in C noch in C++ einfach eine Funktion `void loop()` definieren und erwarten, dass die dann auf magische Weise immer wieder aufgerufen wird.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
Hypec
User
Beiträge: 183
Registriert: Mittwoch 1. August 2018, 16:11

https://de.wikipedia.org/wiki/Arduino_(Plattform) Also hier steht C, C++ und Asembler. Das das eine Funktion der Laufzeitumgebung ist wusste ich nicht.
Benutzeravatar
__blackjack__
User
Beiträge: 14040
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

AVR-Assembler geht ja nur wenn auch tatsächlich ein entsprechender Prozessor im Arduino steckt. Es gibt ja mittlerweile auch Arduinos mit ARM-Prozessoren und die Umgebung wurde auch auf andere Boards mit anderen Prozessoren portiert. Die Arduino-Webseite sagt C++ und empfiehlt Bibliotheken als Klasse zu implementieren, also auch C++. C ist da eher als Untermenge von C++ dabei; letztlich läuft das immer durch einen C++-Compiler.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
Antworten