全局变量在python中工作良好。在
代码中的问题是首先启动f1函数,该函数将进入休眠状态0.5秒。在
然后在启动f1之后,您还立即启动f2,然后在里面有一个循环-while nn-但是f2的初始值是False,因此它永远不会进入while循环,线程结束。在
您真的希望代码从启动f1线程和while nn条件(以便nn可以设置为True)需要超过0.5秒的时间吗?我想程序到达那里不会超过几纳秒。在
全局变量工作示例->>> import threading
>>> import time
>>> def func():
... global l
... i = 0
... while i < 15:
... l.append(i)
... i += 1
... time.sleep(1)
>>> def foo(t):
... t.start()
... i = 20
... while i > 0:
... print(l)
... i -= 1
... time.sleep(0.5)
>>> l = []
>>> t = threading.Thread(target=func)
>>> foo(t)
[0]
[0]
[0]
[0, 1]
[0, 1]
[0, 1, 2]
[0, 1, 2, 3]
[0, 1, 2, 3]
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4, 5]
[0, 1, 2, 3, 4, 5]
[0, 1, 2, 3, 4, 5, 6]
[0, 1, 2, 3, 4, 5, 6]
[0, 1, 2, 3, 4, 5, 6, 7]
[0, 1, 2, 3, 4, 5, 6, 7]
[0, 1, 2, 3, 4, 5, 6, 7, 8]
[0, 1, 2, 3, 4, 5, 6, 7, 8]
[0, 1, 2, 3, 4, 5, 6, 7, 8]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]