Python 线程不会更改函数内的全局变量



我想编写的代码的最基本形式如下:

import threading
arr = []
def test(id):
global arr
arr.append(id)
threading.Thread(target=test, args="8")
print(arr)

我想做的是将"8"附加到一个名为arr的全局变量中,但这不会发生,print(arr(给出了以下输出:

[]

但是,如果我使用此代码,一切正常:

import threading
arr = []
def test(id):
global arr
arr.append(id)
test("8")
print(arr)

问题似乎出在线程上,那么如何使用线程并在函数测试中更改全局变量的值?

您还必须启动线程才能实际运行函数test

import threading
arr = []
def test(id):
global arr
arr.append(id)
t = threading.Thread(target=test, args="8")
t.start()
t.join()
print(arr)