lo1chik
@lo1chik
дурачок из нижних интернетов

Как перезапустить поток в python?

a = "a"
import time,threading

def thread_func(a):
    w = 0
    while w < 5:
        time.sleep(2)
        print("func:" + a)
        w += 1

if __name__ == "__main__":
    x = threading.Thread(target=thread_func, args=(a))
    x.start()

a = input()

есть вот такой код,от которого я жду следующий результат:

func:a
func:a
d
func:d
func:d
func:d

но вместо этого получаю это:

func:a
func:a
d
func:a
func:a
func:a


как заставить функцию работать с новым значением аргумента?
  • Вопрос задан
  • 574 просмотра
Пригласить эксперта
Ответы на вопрос 2
@prochanev
используйте global, а не передавайте переменную в функцию
import threading
import time

a = 'a'
def thread_func():
    global a
    w = 0
    while w < 5:
        time.sleep(2)
        print("func:" + a)
        w += 1

x = threading.Thread(target=thread_func)
x.start()
a = input('Введите новое значение')
Ответ написан
@bbkmzzzz
Не используйте глобальные переменные, используйте класс
import time,threading

class Foo:
    a = "a"

def thread_func():

    w = 0
    while w < 5:
        time.sleep(2)
        print("func:" + Foo.a)
        w += 1

if __name__ == "__main__":
    x = threading.Thread(target=thread_func)
    x.start()
    Foo.a = input('new: ')
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы