Python Ist mein RTX 3070 Web Scraper effizient? Oder kann man noch etwas anpassen?

ConqiFanboy

Cadet 1st Year
Registriert
März 2021
Beiträge
15
Python:
import json
from urllib.request import urlopen
import webbrowser
import tkinter
from tkinter import messagebox
import time

url = "https://api.nvidia.partners/edge/product/search?page=1&limit=9&locale=de-de&category=GPU&gpu=RTX%203070"
available = "3070 FE NOW AVAILABLE!!!"


def main():
    while True:
        try:
            data = json.loads(urlopen(url).read())
            availability = data['searchedProducts']['featuredProduct'].get('prdStatus')

            if availability != "out_of_stock":
                for i in range(5):
                    webbrowser.open("https://youtu.be/E0SN614t2WI")
                print(available)
                notify(available)
                break

        except Exception as e:
            notify("Error? -> " + e.__str__())
        finally:
            time.sleep(60)


def notify(message):
    tkinter.Tk().withdraw()
    messagebox.showinfo("NOTIFICATION", message)


if __name__ == '__main__':
    main()
 
Naja, Effizienz ist relativ.
Wenn es dir wirklich um Performance geht bleibt eigentlich nur C/C++/Rust.
Andererseits schläfst du am Ende 60 Sekunden und du selbst bist beim kauf eh viel langsamer als ein Programm. Von daher glaube ich nicht, dass es da auf die Millisekunde ankommt.

Ist die Wartezeit von 60s zwischen Anfragen vorgegeben? Dann würde ich mir nicht die mühe machen im restlichen Teil noch nach verbesserungsmöglichkeiten zu suchen.
 
  • Gefällt mir
Reaktionen: KitKat::new()
Du machst da jetzt nichts was algorithmisch super komplex ist. Schaut schon ganz gut aus.
Das mit ddem fix 60 sekunden warten am Ende ist nett, damit du nnicht irgendwo unterwegs blockiet wirst, wenn die Anfragen immer vonn der selben IP kommen, kann es sein, dass da irgendwann eine Firewall entscheidet das du weg bleiben sollst. Dafuer koenntest du etwas error handling einbauen.

Als Vidieo Schlage ich das hier vor. https://youtu.be/dQw4w9WgXcQ

Weiss @Conqi von dir? :D
 
  • Gefällt mir
Reaktionen: MindofRafi
@madmax2010 Ja, hehe

@ZuseZ3 Es wird nur alle 60 Sekunden überprüft ob die RTX 3070 verfügbar ist, weil es nicht nötig ist mehr als 5 mal die Minute zu gucken ob sie endlich da ist denke ich. Meine eigentliche Frage bezieht sich eher darauf, ob man den Abruf dieser Verfügbarkeit verbessern kann, kenne mich mit Web Sachen nicht so gut aus
 
  • Gefällt mir
Reaktionen: Conqi
Zurück
Oben