Forum
  
    >> 
    
      Programmazione Python
    
  
    >> 
    
      Scripting
    
  
  >>
  
    Scope delle variabili nel try-except
  
  
  
  
  
  
  
   
  
    
    
    
      
      
  
Pagina: 1
  
Esegui il login per scrivere una risposta.
      
  
      
    Pagina: 1
| 
          
Scritto da Bageyelet  | 
        
          
 2018-01-10 12:03:49 - Scope delle variabili nel try-except 
  
 | 
      
| 
          
          
             Stavo facendo degli esperimenti in Python 2.7 e mi sono imbattuto nel seguente errore; lanciando questo script
 
          
          
            
          
          
        import sys
import resource
MEMORY_LIMIT = 1024 * 1024 * 1 # 1 MiB
def memory_limit():
    resource.setrlimit(resource.RLIMIT_AS, (MEMORY_LIMIT, MEMORY_LIMIT))
memory_limit()
s = ""
while 1:
    try:
        s += "a"
    except MemoryError:
        print len(s)
        sys.exit(0)
ottengo un NameError alla riga print len(s). Il traceback completo è: Traceback (most recent call last):
  File "limit.py", line 16, in <module>
    print len(s)
NameError: name 's' is not defined
La stranezza risiede nel fatto che s è definita ed inizializzata nello scope globale. Cosa mi sfugge? Notare che il seguente script termina correttamente from random import randint
import sys
def foo():
    if randint(0, 100) == 23:
        raise Exception
    else:
        return "a"
s = ""
while 1:
    try:
        s += foo()
    except:
        print len(s)
        sys.exit(0)Grazie in anticipo dell'aiuto   | 
      |
| 
          
Scritto da Daniele aka Palmux ![]()  | 
        
          
 2018-01-10 21:22:08 - Re: Scope delle variabili nel try-except 
  
 | 
      
| 
          
          
             Ciao caro, sono al volo e non posso provare il codice, ma sei sicuro che raggiungendo il limite di memoria che hai settato, non si svuoti la memoria stessa e quindi s di fatto non esista più? Prova a leggere sulla documentazione, potrebbe essere questo il problema, che poi problema non sarebbe.
 
          
          
            
          
          
        Scusa se non sono preciso, ma non uso mai questo sistema per limitare il range di utilizzo di uno script. Cya  | 
      
Pagina: 1
Esegui il login per scrivere una risposta.
  
