ich habe aktuell folgenden Code in zwei Modulen:
Modul "main":
Code: Alles auswählen
#!/usr/bin/python
import threading
import b
a = 0
def api_a():
global a
print("api_a()")
a = 1
def main():
global a
thread_B = b.B_thread()
print("a = " + str(a))
thread_B.start()
# api_a()
thread_B.join()
print("a = " + str(a))
if __name__ == '__main__':
main()
Code: Alles auswählen
#!/usr/bin/python
import threading
import main
class B_thread (threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
print("Starting " + self.name)
B_process()
print("Exiting " + self.name)
def B_process():
main.api_a()
Code: Alles auswählen
a = 0
Starting Thread-1
api_a()
Exiting Thread-1
a = 0
Wenn ich stattdessen in Modul "main" die auskommentierte Zeile aktiviere (also: api_a() ), dann wird "a" auf "1" gesetzt. Wieso funktioniert das aber nicht mit dem Aufruf aus dem Thread heraus?
Wieso schreibt die aufgerufene Funktion api_a() nicht die "1" in die Variable?
Auf die Verwendung von Locks für den Variablenzugriff aus dem Thread-Kontext heraus, habe ich in dem Beispiel verzichtet.
Jemand eine Idee?
Vielen Dank,
Thomas