Как получить значение переменной из while True
Мне надо получать значение hash раз в 600 секунд из while True, чтобы потом запускать функцию encrypt_decrypt сколько угодно (не раз в 600 секунд). Прошу прощения за такой странный код, просто на улицу давно не выходил) Если нужны уточнения - спрашивайте.
def listen():
while True:
yield hash_generate.generator()
time.sleep(600)
def encrypt_decrypt():
s = crypter.encrypt(key=hash, plaintext="Text")
crypter.decrypt(key=hash, ciphertext=s)
for i in listen():
hash = hash_generate.hashvalue2
print(hash_generate.hashvalue2)
encrypt_decrypt()
Ответы (1 шт):
Автор решения: Pavel Durmanov
→ Ссылка
In [52]: import time
In [53]: import random
In [54]: def ensure_periodic_value(interval):
...: def wrapper(func):
...: def inner(*args, **kwargs):
...: if time.monotonic() - getattr(func, "ttl", interval) >= interval:
...: func.periodic_value = random.randint(1, 100)
...: func.ttl = time.monotonic()
...: return func(func.periodic_value)
...: return inner
...: return wrapper
...:
In [55]: @ensure_periodic_value(interval=5)
...: def func(random_value):
...: print(f"Random value is: {random_value}")
...:
In [56]: while True:
...: func()
...: time.sleep(5)
...:
Каждые interval секунд в функцию func будет передано рандомное число, вывод:
Random value is: 80
Random value is: 84
Random value is: 34
Вместо 5 секунд передайте 600, вместо рандома - ваш хэш.