Python: optimer linktjek program?

Tags:    python links optimering urlrequest

,



Indlæg senest redigeret d. 07.04.2011 08:54 af Bruger #16469
3 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Der følger foreslag til optimering, men jeg tvivler på at de vil gøre stor forskel, da det meste af din spild tid formentlig er i at vente på svar fra serveren.


Forudsat at Python 3 er som Python 2, vil:
for p in range(p, 1000):
være hurtigere end
while p < 1000



En optimering jeg vil tro der hjælper ville være at fjerne decode kaldene.

kan du ikke skrive

line = line.decode('utf-8')

som den første linie i din for løkke.

og spare alle andre decode's væk.




Der udover kan du refactorer player_age_check ud som at argument til functionen. Vil både gøre den hurtigere, hvis Python 3 er ligesom 2, men også mere fleksibel da du kan ændre søge criteriet, ved at ændre argumentet.




du kan ændre:
links3 = links2[links2.find("/"):links2.find('">')]
til:
p = links2.find("/")
links3 = links2[p:links2.find('">',p)]



Hej, tak for hjælpen, det har speedet hele programmet en del op (:
Forstår dog ikke den del med at refactorer?
Jeg er stadig ret så ny til python, så kunne du give et eksempel?




Refactoring (engelsk, tro det hedder refaktorerer på dansk) handler i bund og grund om at forbedre kode ved at rykke rundt på kodestumper.

Forbedringen er i form af simplere, hurtigere, pænere, variablere kode.

Mit for forslag gik ud på at i stedet for at du har


Fold kodeboks ind/udKode 


Refaktorerede du funktionen ud til at være et argument:

Fold kodeboks ind/udKode 


Du skal så selvfølgelig kalde find_line funktionen med en funktion:

Fold kodeboks ind/udKode 


Denne refaktorering gør din kode mere variable, du kan give en anden funktion en player_age_check, men den vil også gøre din kode hurtigere.

Farten opnåes, hvis Python 3 ligesom Python 2, slår globale funktioner op ved hvert kald.





t