Warum lastet Python meine CPU kaum aus?
Ich habe gerade ein Programm in Python mit Hilfe meiner IDE Pycharm geschrieben, welches überprüft, ob eingegebene Zahlen Primzahlen sind. Jetzt wollte ich das ganze mal mit größeren Primzahlen ausprobieren und habe "188748146801" eingeben. Das Programm rechnet jetzt schon eine ganze Weile, wobei im Task Manager anzezeigt wird, dass meine Hardware quasi nicht beansprucht wird. Warum kann auf Kosten von Leistungsaufwand der Prozess nicht schneller ablaufen? Liegt das daran, dass Python nicht gerade die effizienteste Programmiersprache ist oder limitiert Pycharm die Leistung, die beansprucht wird?
Der Code sieht folgendermaßen aus:
input1 = int(input())
prime = True
for num in range(2,input1):
if input1 % num == 0:
prime = False
break
if prime == True:
print(input1,"is a prime number")
else:
print(input1,"is not a prime number")
2 Antworten
Da Du nur einen Ausführungsstrang hast, kann maximal ein Kern mit der Arbeit beschäftigt sein. Je nachdem wie die Last bewertet wird, ist dann halt bei 1/Kerne als Maximallast Schluß.
Randnotiz: Es reicht wenn Du alle Zahlen bis Wurzel(n) testest.
Hallo.
Ich würde mal stark davon ausgehen, dass die Ausführung lediglich auf einem Kern stattfindet. Und da der Code als Child-Thread von Pycharm ausgeführt wird und ich weiterhin erwarte, dass Hyperthreading aktiv ist, bekommst du gerade mal den Bruchteil eines Kerns für die Ausführung.
Das liegt aber nicht unbedingt an Pycharm selbst, bzw. wirst du kaum eine Software finden, welche die Ausführung von Programmcode intelligent auf mehrere Kerne legt.
Natürlich ist die Antwort ohne Gewähr, schlicht eine Vermutung!