Plötzliche Verringerung der Python-Iterationsgeschwindigkeit nach 10 SekundenPython

Python-Programme
Guest
 Plötzliche Verringerung der Python-Iterationsgeschwindigkeit nach 10 Sekunden

Post by Guest »

Ich schreibe Code in Python, um die erste natürliche Zahl herauszufinden, die nicht in der ersten Milliarde Stellen von Pi vorkommt. Folgendes habe ich geschrieben:

Code: Select all

import datetime
from tqdm import tqdm
def findpi(end):
notin = []
stop = 0
s1 = datetime.datetime.now()
with open(r"C:\Users\shamm\Desktop\Text Documents\1 BILLION Digits of pi.txt", 'rt') as p:
pi = str(p.read())
for i in tqdm(range(1,end+1)):
if str(i) not in pi:
if notin == []:
stop = i
notin.append(i)
s2 = datetime.datetime.now()
tdelta = s2 - s1
ts = tdelta.total_seconds()
return [notin, stop, ts]

pi = findpi(1000000)
print("Not in:", pi[0])
print("Last:", pi[1])
print("Time taken:", pi[2])
Für kleine Zahlen funktioniert es gut, und als ich es mit der ersten Million natürlicher Zahlen versuchte, stand der Code plötzlich vor einer Blockade. In den ersten 10 Sekunden läuft es mit etwa 10.000 Iterationen/s, aber dann sinkt es plötzlich auf 1.000 Iterationen/s. Ich habe es mit einer größeren Eingabe von 10 Millionen versucht, und das Gleiche passiert, wenn ich nur 10 Sekunden lang mit 10k it/s laufe. Nach mehr als 30 Minuten Laufzeit sinkt die Geschwindigkeit auf 100 it/s.
Gibt es einen Engpass, der verhindert, dass zu viel Speicher oder Rechenleistung verbraucht wird? Oder stimmt etwas in meinem Code nicht?
Bearbeiten: Die Ursache scheint also in der ständig zunehmenden Länge der Zahl zu liegen, die durchsucht werden muss. Wie kann ich diese Suche optimieren, damit sie nicht mit jeder Erhöhung der Ziffernzahl langsamer wird?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post