Поток Python не меняет глобальную переменную внутри функции - PullRequest
0 голосов
/ 26 сентября 2018

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

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 ?

1 Ответ

0 голосов
/ 26 сентября 2018

Вы также должны запустить поток, чтобы фактически запустить функцию 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...