所以我有这段代码:
import time
import threading
bar = False
def foo():
while True:
if bar == True:
print "Success!"
else:
print "Not yet!"
time.sleep(1)
def example():
while True:
time.sleep(5)
bar = True
t1 = threading.Thread(target=foo)
t1.start()
t2 = threading.Thread(target=example)
t2.start()
我正在尝试理解为什么我无法将bar
传递给=
到true
。如果是这样,那么另一个线程应该看到更改并写入{{1 }}
答案 0 :(得分:11)
bar
是一个全局变量。您应该将global bar
放在example()
:
def example():
global bar
while True:
time.sleep(5)
bar = True
global bar
放在foo()
内。global
语句,否则它将在函数内部完成。这就是为什么有必要将global bar
置于example()
答案 1 :(得分:1)
您必须将'bar'指定为全局变量。否则,“bar”仅被视为局部变量。
def example():
global bar
while True:
time.sleep(5)
bar = True