0
我无法理解此代码的行为。奇怪行为Python线程
import sys
import threading
import time
n = 0
e = threading.Event()
# q = False
def foo():
global n
while not e.is_set():
time.sleep(2)
print("Value ", n)
n = 0
t = threading.Thread(target=foo)
t.start()
while True:
try:
n += 1
time.sleep(1)
except KeyboardInterrupt:
e.set()
输出
Value 2
Value 1
Value 1
Value 2
Value 2
Value 1
Value 2
Value 2
Value 2
Value 1
Value 2
Value 1
Value 2
Value 1
Value 1
Value 1
Value 1
^CValue 3
^C^C^C
当我在第一次输入Ctrl-C。该程序不打印任何东西,并被阻止,并且不会进一步响应Ctrl-C.有人可以解释这种行为
您正在同一时间从2个线程获取全局资源,实际上这是未定义的行为。 – Netwave
这可能不是最佳实践。我只是想了解这里发生了什么。 – user634615
我会做一个答案试图解释 – Netwave