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