Gå til innhold

Python -> To måter å importere på


Anbefalte innlegg

# Her brukes latin-1 koding. coding:latin-1

# To måter å importere og bruke sleep på. Hvilken er best og hvorfor?
# Mulighet 1
from time import sleep
sleep(1)

# Mulighet 2
import time
time.sleep(1) 

 

Her blir det samme gjort på to forskjellige måter. Hvilken måte er best? Hvorfor er det best? Hva krever mest ressurser av PCen? Finnes det noen måte man kan finne ut hvor mye ressurser et skript bruker? Hvor mange linjer som leses, hvor mye minne som brukes osv..

 

Innbiller meg at mulighet 1 er best siden den er mer spesifikk. Istedenfor å importere hele tids modulen slik som i mulighet 2 importerer mulighet 1 kun selve funksjonen som skal brukes. Dermed blir det mindre fil lesing, prosessor forbruk og minnebruk.

Lenke til kommentar
Videoannonse
Annonse

Her blir det samme gjort på to forskjellige måter. Hvilken måte er best? Hvorfor er det best?

 

Det er ikke noe "best" i dette tilfellet -- man bruker den muligheten som gir mest mening. Dog, en ting å ha i bakhodet er at mulighet #2 vil takle reload() på modulen slik en forventer.

 

Hva krever mest ressurser av PCen?

 

I denne konteksten er det et lite relevant spørsmål.

 

Finnes det noen måte man kan finne ut hvor mye ressurser et skript bruker? Hvor mange linjer som leses, hvor mye minne som brukes osv..

 

heapify kan peke på minnebruken. Hvorfor tror du at antall linjer er et relevant mål på noe som helst, forresten?

 

Innbiller meg at mulighet 1 er best siden den er mer spesifikk. Istedenfor å importere hele tids modulen slik som i mulighet 2 importerer mulighet 1 kun selve funksjonen som skal brukes. Dermed blir det mindre fil lesing, prosessor forbruk og minnebruk.

 

Det blir garantert ikke mindre fillesing (av opplagte årsaker). Det er også slik at for ethvert ikketrivielt program vil programmets egen minne/ressursbruk overskygge kostnaden av en import (uansett hvilken av de to formene man skulle benytte seg av).

Lenke til kommentar

Til zotbar:

Så du sier altså at mulighet 1 har en ulempe da man får problemer med reload() på modulen. Da sier du samtidig at mulighet 2 er best siden mulighet 1 har en ulempe.

 

Mulighet 1 får minus poeng mens mulighet 2 får hverken pluss eller minus poeng og blir dermed stående igjen som vinneren.

 

 

Flere linjer =

Høyere strømforbruk

Mer slitasje på harddisk eller andre lagringsmedier

Ting tar lenger tid

 

Altså får man et dårligere program. Definerer et godt program som et program som gjør det det skal så raskt og enkelt som overhodet mulig samtidig som det bruker minst mulig ressurser.

 

 

 

Fortell gjerne mer om de opplagte årsakene du refererte til på slutten. Kanskje det blir mer opplagt for andre også da :)

Lenke til kommentar

Så du sier altså at mulighet 1 har en ulempe da man får problemer med reload() på modulen.

 

Det var ikke det jeg skrev.

 

Flere linjer =

Høyere strømforbruk

Mer slitasje på harddisk eller andre lagringsmedier

Ting tar lenger tid

 

Igjen, nei. Prøv heller å fokusere på relevante metrikker. ("Mer slitasje på harddisk"? Herregud... Du _vet_ at det ikke trenger å være noe harddiskaksess overhodet, ikke sant?)

 

Fortell gjerne mer om de opplagte årsakene du refererte til på slutten. Kanskje det blir mer opplagt for andre også da :)

 

For å foreta en "from a import b" må man lese a i sin helhet.

Endret av zotbar1234
Lenke til kommentar

Hva som er "best" i denne sammenhengen tror jeg først og fremst bør bestemmes av hva som gjør koden lett å lese og skrive.

 

Ved bruk av mange "from ... import ..." kan du komme til å ha flere metoder med samme navn, og det kan være vanskelig i koden å skille hvilke moduler de forskjellige metodene tilhører.

 

På den andre siden gjør "from ... import ..." det raskere å skrive navnet på metoder du bruker mange gang.

 

Jeg ville brukt "import ... " for det meste, og "from ... import ... " hvis det er metoder jeg skulle bruke mye.

 

Angående ressursbruk på maskinvaren har jeg ingen anelse hva som er best, eller om det er noe forskjell.

  • Liker 1
Lenke til kommentar

På den andre siden gjør "from ... import ..." det raskere å skrive navnet på metoder du bruker mange gang.

 

Jeg ville brukt "import ... " for det meste, og "from ... import ... " hvis det er metoder jeg skulle bruke mye.

 

Du har også import ... as ...

for eksempel

 

import hashlib as h

 

Så får du både lite å skrive, og du bruker ikke opp alle navnene du ville ha brukt opp ved from import

  • Liker 1
Lenke til kommentar

Flere linjer =

Høyere strømforbruk

Mer slitasje på harddisk eller andre lagringsmedier

Ting tar lenger tid

 

Punkt 1: Filsystem / harddisk leser / skriver data i blokker (4kb er vel det vanligste). Altså om det er 20 byte eller 4090 bytes har absolutt ingen forskjell på strømforbruk og slitasje.. Virkelig... Og lenger tid? Hah, snakker vel om megabytes med kode før det har noen praktisk målbar effekt på parsing tid.

 

Punkt 2: http://www.technovelty.org/code/arch/funroll.html

 

*grabs popcorn*

Endret av Terrasque
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...