Ich arbeite daran, einen Haufen Dreiecke mit speziellen Eigenschaften für einen Number Theorist-Freund zu berechnen. Es gibt unendlich viele dieser Dreiecke, aber sie benötigen viel Rechenleistung, um sie zu finden.Benutzereingabe zum Abbrechen der Endlosschleife?
Wir haben eine Endlosschleife, die durch verschiedene b, d Kombinationen läuft. Wenn das Programm endet, ruft es die Funktion go (dict) auf, um die gefundenen Dreiecke zu exportieren. Momentan teilen wir dem Programm zu Beginn mit, in welchem Intervall es laufen soll. Dies verursacht Probleme, wenn wir erkennen, dass wir die Rechenleistung für etwas anderes benötigen, aber das Programm hat noch Stunden zu laufen und wir wollen die Dreiecke, die es bereits berechnet hat, nicht verlieren, indem wir das Programm verlassen ohne go (dict) zu laufen.
Idealerweise möchten wir, dass eine Benutzereingabe das Programm veranlasst, die Schleife zu unterbrechen. Führen Sie (dict) mit der aktuellen Version des Wörterbuchs, das im Speicher gehalten wird, aus und beenden Sie es. Der Versuch mit atexit.register (go, dict) war nicht erfolgreich, da es oft innerhalb der Schleife aufgerufen wird und oft ausgeführt wird, wenn das Programm beendet wird.
(Siehe den abgekürzten Schleife Code unten)
interval = eval(input("How many hours shall I run for? "))*3600
starttime = time.time()
dict = {}
b = start_value
while True:
for d in range (1, b):
compute stuff
if (condition):
add triangle to dict
if (time.time()-starttime)>interval:
go(dict)
return
b +=1
Welches Betriebssystem verwenden Sie? – martineau