Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: python: memory overflow  (gelezen 2232 keer)

0 leden en 1 gast bekijken dit topic.

Offline fearbear

  • Ambassadeur
  • *****
  • Berichten: 1.154
  • Geslacht: Man
  • Kennis = macht. macht ~ verantwoordelijkheid
python: memory overflow
« Gepost op: 14 mei 2008, 14:35:19 »
Als ik in python in een for loop de maximumwaarde van integer (sys.maxint) overschrijd, krijg ik een memory overflow-error.
Dit is de code: for i in range (2, x+1):
  #do something
als x groter is dan 2147483646, weigert python om verder te gaan. Hoe kan ik toch verder gaan? Heb ik dan een while-loop nodig ipv een for loop? Of een speciale module zoals pynum?
GeForce 7900 GS, Windows XP, Prof, SP2, EN, Intel(R) Core(TM)2 CPU          6400  @ 2.13GHz, 2045 MB RAM, HDD:312 GB, NTFS, AntiVir antivirus, ZoneAlarm Firewall, Firefox 2.0

Offline Firebirdy

  • Ambassadeur
  • *****
  • Berichten: 2.408
  • Geslacht: Man
Re: python: memory overflow
« Reactie #1 Gepost op: 14 mei 2008, 18:17:31 »
kan je niet het python-equivalent van een long gebruiken? met een int zit je idd vast aan 32 bits.

Offline fearbear

  • Ambassadeur
  • *****
  • Berichten: 1.154
  • Geslacht: Man
  • Kennis = macht. macht ~ verantwoordelijkheid
Re: python: memory overflow
« Reactie #2 Gepost op: 14 mei 2008, 18:36:42 »
Daar had ik aan gedacht, maar normaal gezien zou python dat automatisch moeten doen, en bovendien zie ik niet goed hoe ik die long in de for-lus kan opnemen. Ik zal eens proberen met een while lus, en zelf een long variabele bijhouden om te tellen.
GeForce 7900 GS, Windows XP, Prof, SP2, EN, Intel(R) Core(TM)2 CPU          6400  @ 2.13GHz, 2045 MB RAM, HDD:312 GB, NTFS, AntiVir antivirus, ZoneAlarm Firewall, Firefox 2.0

Offline fearbear

  • Ambassadeur
  • *****
  • Berichten: 1.154
  • Geslacht: Man
  • Kennis = macht. macht ~ verantwoordelijkheid
Re: python: memory overflow
« Reactie #3 Gepost op: 19 mei 2008, 21:46:04 »
ik heb het nog steeds niet geprobeerd :-[, maar ben iets zeer vreemds tegen gekomen. Als ik deze code uitvoer:
x=2147483629
for i in range (3, x+1): ...
wordt deze zonder problemen uigevoerd.

Als ik echter een derde argument (2) aan range toevoeg (step), dan krijg ik een memoryerror, zelfs als ik x+1 vervang door bijv x-1. Zie ik nu iets logisch over het hoofd, of is er echt iets vreemds aan de hand?

for int in range(3,x-1,2): ...
GeForce 7900 GS, Windows XP, Prof, SP2, EN, Intel(R) Core(TM)2 CPU          6400  @ 2.13GHz, 2045 MB RAM, HDD:312 GB, NTFS, AntiVir antivirus, ZoneAlarm Firewall, Firefox 2.0

Offline fearbear

  • Ambassadeur
  • *****
  • Berichten: 1.154
  • Geslacht: Man
  • Kennis = macht. macht ~ verantwoordelijkheid
Re: python: memory overflow
« Reactie #4 Gepost op: 26 mei 2008, 19:34:26 »
De oplossing is om in plaats van een for een while-loop te gebruiken. Dat wordt dan:
i=0
while i<1000000:
 #do_something
 i+=1
GeForce 7900 GS, Windows XP, Prof, SP2, EN, Intel(R) Core(TM)2 CPU          6400  @ 2.13GHz, 2045 MB RAM, HDD:312 GB, NTFS, AntiVir antivirus, ZoneAlarm Firewall, Firefox 2.0

 


www.combell.com