我try 在多个线程中使用同一个变量,但变量的值在多个线程中没有一致地更新.例如,当线程1将变量更新为1时,线程2无法识别此更改,而是看到旧值.
下面是一个简单的代码示例,说明了这个问题.当用户按下‘a’键时,变量‘Query’应该更新并显示如下:
- -oh my 天.
- 发文:2011年6月30日星期五
但是,我得到的实际输出只有:
- -oh my 天.
你能帮我理解为什么会发生这种情况,以及如何修复吗?
import getch
import threading
QUERY = ""
EXIT_THREAD = False
def input_thread():
global EXIT_THREAD
last_query = ""
while not EXIT_THREAD:
if last_query != QUERY:
last_query = QUERY
print(f"Query: {QUERY}")
thread = threading.Thread(target=input_thread)
thread.start()
while True:
char = getch.getch()
if char == "\n":
break
elif char == "\x7f":
QUERY = QUERY[:-1]
else:
QUERY += char
print(f"Query1: {QUERY}")
# kill input thread
EXIT_THREAD = True
thread.join()