Reduser minnebruk i Python ved hjelp av spor.

Slots er en slags Python magi som reduserer minnebruk av et program. Det er bare nyttig nar vi har mange objekter med fast antall attributter. For eksempel, la oss anta at vi har et online shopping-nettsted. Nar en bruker legger til et element i handlekurven, oppretter vi et objekt for det aktuelle elementet. For eksempel,

La oss lage et objekt for CartItem.

Som vi la merke til, er vi fri til a legge til en ny egenskap i vart CartItem-objekt, og objektets __dict__ inneholder alle egenskapene til klassen. La oss si at det er millioner av varer som flyter rundt i alle handlekurver. Siden python bruker ordbok for a lagre variabler, vil hver ordbok ha et hashbord for raskere oppslag. Dette krever ekstra plass. Denne plassen er ubetydelig nar vi har et minimum antall objekter. Men det kan forbruke mye plass hvis antall objekter er relativt hoye.

Det er en spesiell klasse variabel i Python kalt __slots__. La oss oppdatere CartItem-klassen var for a bruke __slots__.

Let’s spille rundt med var nye klasse.

Na tillater ikke CartItem-objektet oss a skape nye attributter i objektet, med mindre de er angitt i __slots__. __slots__ kan v re en streng med navnet pa et attributt eller en iterbar med liste over strenger som angir attributtnavn. Nar vi legger til __slots__ til en klasse, vil Python faktisk bruke tuple til a lagre attributter i stedet for a bruke en ordliste. I eksemplet ovenfor kan vi tydeligvis se at tilgang til __dict__ av objektet hevet et unntak. Ved a bruke tuple i stedet for en ordliste lagrer vi litt minne i objektet vart. Dette lille minnet legger til og blir stort nar det er stort antall objekter i soknaden din.

La oss prove a male var CartItem-minnebruk med og uten __slots__.

Hvis vi kjorer det samme programmet etter a ha fjernet __slots__ klassevariabelen,

Klart er plassen redusert rundt 43% etter bruk av spor.

Nar det er et stort antall objekter med fast antall egenskaper, kan __slots__ v re sv rt gunstig for a redusere RAM-bruken. __slots__ skal deklareres i hver klasse. Hvis foreldreklassen din har definert __slots__, vil barneklasse ignorere den. __slots__ forbyder a skape nye attributter til objekter med mindre de er spesifisert i spor. Denne bivirkningen kan ikke misbrukes for a beskytte objektene dine mot a skape nye egenskaper. Alle attributter lagres i tuple istedenfor objektets __dict__ for a spare plass.

Du kan ogsa nyte.

Webprogrammering med Python – Del 2 – CGI.

Hvis du leser forrige innlegg, stoppet vi etter at vi hadde innfort webservere. I dette innlegget skriver vi veldig enkelt webprogram ved hjelp av cgi programmering.

Webprogrammering med Python – Del 1 – Webservere.

Innledning Webprogrammering eller webutvikling er et begrep som i stor grad betyr utvikling av nettsteder. Utvikling av nettsteder bestar hovedsakelig av to deler.

Python Liste Forstaelser og generator uttrykk.

Forstaelse er en av de fremtredende egenskapene til Python. Nar du forstar dem, hjelper det a unnga mye redundant og repeterende kode. Det hjelper crea.

Crawling websider ved hjelp av Python og Scrapy – Tutorial.

I dette innlegget, la oss ga gjennom hvordan vi kan gjennomsoke nettsider ved hjelp av Scrapy.