Я хочу установить несколько таймеров (одну и ту же функцию) одновременно, но с разным временем окончания. Программирование на питоне 3. Мой код в настоящее время:
import time
def timer(t):
start = time.time()
stop = False
while not stop:
if time.time()> start+t:
print("I'm done counting to %d" % t)
stop = True
timer(4)
timer(1)
timer(5)
Теперь я хотел бы, чтобы он сначала печатал 1, затем 4 и, наконец, 5, но вместо этого он полностью запускает таймер (4) и только после этого переходит к следующему таймеру. Я немного слышал о многопоточности, но не смог найти хороший пример того, как реализовать ее в моем коде. В конце концов, я также хотел бы добавить возможность отложить запуск таймера на n секунд. Большое спасибо!
Если речь идет только о таймерах, вы можете использовать непосредственно таймеры, без более сложной многопоточности:
https://docs.python.org/3.8/library/threading.html
https://docs.python.org/3.8/library/threading.html#объекты-таймеры
import threading
def hello():
print("hello, world")
t = Timer(30.0, hello)
t.start() # after 30 seconds, "hello, world" will be printed
Попробуйте это: (Проверено на моей машине, Python 3.8.2)
from threading import Timer
def hello(t):
print("Counted to", t)
t1 = Timer(4, hello, [4])
t1.start()
t2 = Timer(1, hello, [1])
t2.start()
t3 = Timer(3, hello, [3])
t3.start()
Чтобы отложить запуск, добавьте другие таймеры, которые вызывают функцию, которая ничего не делает.
Таймеры такого типа вызываются только один раз, хотя и в конечное время.