yum
Апрель 3, 2016 15:04:40
Здравствуйте!
Подскажите пожалуйста, как сделать простой таймер, логика примерно такая:
# Функция timer() запускает каждые 10 сек. do_work()
# timer() не должен ждать завершения do_work()
def timer():
while 1:
time.sleep(10)
do_work()
def do_work():
pass
timer()
Python 3.2.3
FishHook
Апрель 3, 2016 15:12:54
Вы не знаете как в питоне передать функцию аргументом в другую функцию или в чем вообще состоит суть вопроса?
yum
Апрель 3, 2016 15:20:49
Я хочу запустить do_work() асинхронно, или в ивент-лупе, не дожидаясь ее выполнени. Точно по таймеру - 10 сек, а в примере выше, если функ. do_work() будет работать 5 сек. то сдедующий ее вызов будет через 15 сек.
JOHN_16
Апрель 3, 2016 15:49:49
1) самый простой способ это запустить выполнение функции в новом потоке
2) как вы уже сказали использовать event loop. Для питона 3 есть asyncio модуль, для 2 и3 есть gevent модуль и тп
doza_and
Апрель 3, 2016 16:28:22
JOHN_16
самый простой способ
Проще использовать готовый scheduler, тем более он встроенный.
https://docs.python.org/3/library/sched.htmlhttps://docs.python.org/2/library/sched.html
yum
Апрель 3, 2016 21:46:59
Что-то не совсем понятно как мою задачу можно реализовать с помощью scheduler. Можно пример?
ZerG
Апрель 4, 2016 09:36:19
А что из примера вам не понятно?