@SideWest
Python.Новичок

Python. Конечные автоматы с много поточностью. Почему так?

Я написал такой код:
from enum import Enum
import time
import threading

class State(Enum):
    WAITING = 1
    WORKING = 2

def thread(my_func):
    def wrapper(*args, **kwargs):
        my_thread = threading.Thread(target=my_func, args=args, kwargs=kwargs)
        my_thread.start()
    return wrapper

@thread
def timeri():
    state = State.WORKING
    time.sleep(5)
    print('Закончил работать')
    print(state)
    state = State.WAITING

def main():
    state = State.WAITING
    while True:
        print(state)
        sms = input()

        if state == State.WAITING:
            print('Привет дружочек пирожочек')
            timeri()
        elif state == State.WORKING:
            print('Я занят')

if __name__ == '__main__':
    main()

Код, запускается, пишем сообщение, нас один раз приветствует, а после запускается таймер, которые работает 5 секунд и по идее, эти 5 секунд, он должен писать "я занят" (Нужна именно много поточность, чтобы можно было писать и в момент его работы)

Но в результате он всегда пишет нам привет, почему так происходит?

`State.WAITING
Привет
Привет дружочек пирожочек
State.WAITING
Привет
Привет дружочек пирожочек
State.WAITING
Закончил работать
State.WORKING
Привет
Привет дружочек пирожочек
State.WAITING
  • Вопрос задан
  • 285 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
У функций timeri и main разные экземпляры state
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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