Как наблюдать переменную с потоком? - PullRequest
1 голос
/ 01 мая 2020

Можно ли наблюдать текущее значение переменной с потоком? Пример: у меня есть переменная, которая меняет свое значение каждую секунду, и функция check (), которая должна вывести «больше 10», как только переменная превысит 10.

Есть идеи?

import threading
import time


def check (timer):

    print("thread started")
    while True:
        if timer > 10:
           print("over 10")


timer = 0
threading.Thread(target= check, name= "TimerThread", args=((timer,))).start()


while True:
    print(str(timer))
    timer = timer + 1
    time.sleep(1)

1 Ответ

1 голос
/ 01 мая 2020

timer в вашей функции check() не является той же переменной, что и переменная timer верхнего уровня. Значение check() является локальным.

Попробуйте изменить check() следующим образом:

def check ():
    global timer
    ...the rest is unchanged...

Ключевое слово global позволяет функции check() видеть верхний уровень. timer.

Тогда, поскольку check() больше не ожидает аргумента, вы можете запустить его более просто:

threading.Thread(target= check, name= "TimerThread").start()
...