Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 3, 2016 15:04:40

yum
Зарегистрирован: 2015-10-27
Сообщения: 6
Репутация: +  0  -
Профиль  

Таймер

Здравствуйте!

Подскажите пожалуйста, как сделать простой таймер, логика примерно такая:

# Функция 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

Отредактировано yum (Апрель 3, 2016 15:13:09)

Офлайн

#2 Апрель 3, 2016 15:12:54

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Таймер

Вы не знаете как в питоне передать функцию аргументом в другую функцию или в чем вообще состоит суть вопроса?



Офлайн

#3 Апрель 3, 2016 15:20:49

yum
Зарегистрирован: 2015-10-27
Сообщения: 6
Репутация: +  0  -
Профиль  

Таймер

Я хочу запустить do_work() асинхронно, или в ивент-лупе, не дожидаясь ее выполнени. Точно по таймеру - 10 сек, а в примере выше, если функ. do_work() будет работать 5 сек. то сдедующий ее вызов будет через 15 сек.

Офлайн

#4 Апрель 3, 2016 15:49:49

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Таймер

1) самый простой способ это запустить выполнение функции в новом потоке
2) как вы уже сказали использовать event loop. Для питона 3 есть asyncio модуль, для 2 и3 есть gevent модуль и тп



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Апрель 3, 2016 16:28:22

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Таймер

JOHN_16
самый простой способ
Проще использовать готовый scheduler, тем более он встроенный.
https://docs.python.org/3/library/sched.html
https://docs.python.org/2/library/sched.html



Офлайн

#6 Апрель 3, 2016 21:46:59

yum
Зарегистрирован: 2015-10-27
Сообщения: 6
Репутация: +  0  -
Профиль  

Таймер

Что-то не совсем понятно как мою задачу можно реализовать с помощью scheduler. Можно пример?

Офлайн

#7 Апрель 4, 2016 09:36:19

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Таймер

А что из примера вам не понятно?



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version