Ich habe mich wieder ein Mal hingesetzt und ein Wenig programmiert.
Und zwar ein Primzahlenrechner,welcher alle Primzahlen von z.B. 1 bis 100 in eine Datei schreibt.
Beim nächsten Start liest er aus der Datei ein, wo er stehen geblieben ist und man kann eingeben bis zu welcher Zahl er wieder rechnen soll.
Das ganze funktioniert auch relativ gut. Aber wenn ich alle Primzahlen "printe", dann ist das Programm sehr langsam.
Ich habe auch bereits gelesen, dass dies am Windows Terminal liegt, welches einfach Zeit fürs Ausgeben benötigt.
Jetzt habe ich gedacht, dass ich das ganze über einen _thread realisieren könnte, aber ich kann mir einfach nicht vorstellen wie das gehen sollte. Zudem lastet mein Programm nur einen CPU-Kern aus, was nicht optimal ist.
Kann ich dies ebenfalls über _thread ändern?
Gerne nehme ich auch Verbesserungsvorschläge entgegen. Auch wenn ihr Tipps habt, wie ich die Performance verbessern kann, bin ich dankbar.
Danke für eure Hilfe
Code: Alles auswählen
import time
isPrime = True
try:
db = open("primes.txt", "r")
last = int(db.read().splitlines()[-1])
print("Es beginnt bei:", last)
db.close()
except:
print("Noch keine Datei vorhanden. Sie wird neu angelegt.")
last = 2
db = open("primes.txt", "a")
start = last
ende = int(input("Endzahl: "))
if ende < start:
print("Das Ende muss grösser sein, als der bereits berechnete Teil.")
print("Es beginnt bei:", last)
ende = int(input("Endzahl: "))
startTime = time.clock()
def isPrime(zahl):
for x in range(2, int(zahl**0.5)+1):
if zahl % x == 0:
return False
return True
for i in range(start, ende+1):
if isPrime(i) == True:
db.write(str(i)+"\n")
db.flush()
db.close()
endTime = time.clock()
time = (endTime-startTime)/60
print("Alle Primzahlen von {0} bis {1} wurden berechnet. Das hat {2} Minuten gedauert.".format(last, ende, round(time, 3)))
