2016-08-10 1 views
0

den folgenden Code vor:Wie aus einem Thread globalen Variablen in Python zugreifen

from threading import Thread 

def main(): 
    number = 5 

    class my_thread(Thread): 
     def __init__(self, range): 
      Thread.__init__(self) 
      self.range = range 

     def run(self): 
      global number 
      for i in self.range: 
       number += 1 

    t1 = my_thread(range(4)) 
    t1.start() 
    t1.join() 
    print number 

main() 

Die Ausgabe von diesem Programm

Exception in thread Thread-1: 
Traceback (most recent call last): 
    File "C:\Tools\Python27\lib\threading.py", line 801, in __bootstrap_inner 
    self.run() 
    File "C:\Dev\Workspace\Hello World\Hello.py", line 14, in run 
    number += 1 
NameError: global name 'number' is not defined 

5 

Offensichtlich ist, hat my_thread keinen Zugriff auf number haben. Warum ist das und wie kann ich richtig darauf zugreifen?

Antwort

2

Sie benötigen number ein globales in seiner ersten Definition zu machen, wie folgt aus:

def main(): 
    global number 
    number = 5 

...etc... 
Verwandte Themen