Поток Python не меняет глобальную переменную внутри функции

1

Самой базовой формой чего-то, что я хочу кодировать, является код следующим образом:

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)

Проблема, похоже, связана с потоком, поэтому как я могу использовать поток, а также изменить значение глобальной переменной внутри теста функции?

Теги:
multithreading
global-variables

1 ответ

4
Лучший ответ

Вы также должны запустить поток, чтобы фактически запустить функцию 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)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню