Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 28, 2009 18:48:28

dmitry767
От:
Зарегистрирован: 2009-01-28
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Часики

Привет всем :)
Уж извините, что тему новую создал, но пытаясь перечитать все посты связанные со временем на форуме, окончательно запутался :)))
Есть вот такой вот “счётчик”:

# Счётчик секунд, минут, часов
while MySeconds < 60:
time.sleep(1)
sec = sec + 1
if sec > 59:
minute = minute + 1
sec = 0
if minute > 59:
hour = hour + 1
minute = 0
if hour > 23:
hour = 0
Всё работает, всё считается. Но есть проблемка - часики, в зависимости от выбранного time.sleep(), то начинают спешить, то отстают. Как я понял, это из за времени, затрачиваемого на обработку команд интерпетатором. И если я даже и подгоню “время сна”на своём компьютере, то скорость всё равно будет зависеть от производительности системы.
Вопрос: возможно ли избежать задержки? Или может я что то делаю не так?
Спасибо за внимание.



Офлайн

#2 Янв. 28, 2009 18:54:47

FooBar
От:
Зарегистрирован: 2009-01-10
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Часики

чтобы получить время нужно использовать time.strftime(“%X”)



Офлайн

#3 Янв. 28, 2009 18:55:07

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Часики

А что ты хочешь получить в итоге?



Офлайн

#4 Янв. 28, 2009 19:01:44

dmitry767
От:
Зарегистрирован: 2009-01-28
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Часики

Хотелось часы. Но не каждый раз получать время из системы, а что бы один раз (например во время загрузки компа) получить текущее время, а дальше считалось всё с помощью питона. В начале время я получал другим способом. Вот так -

sys_time = time.localtime()
seconds = sys_time[5]
Но время системы должно быть лишь точкой отсчёта.



Офлайн

#5 Янв. 28, 2009 19:04:44

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Часики

Ввиду архитектуры современных операционных систем, с их многозадачностью, это в полной мере невозможно. Не проще ли брать системное время?
Кстати, в доках, черным по белому написано, что функция sleep не имеет достаточной точности.
Зачем так извращаться?



Офлайн

#6 Янв. 28, 2009 19:18:18

dmitry767
От:
Зарегистрирован: 2009-01-28
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Часики

Данные извращения, производятся с целью обучения. Раздел то для новичков. Вот попробовал на практике циклы… Заодно познакомился с функцией sleep. А вопрос просто по ходу возник. Так что - спасибо. :)



Офлайн

#7 Янв. 30, 2009 08:56:01

ice
От:
Зарегистрирован: 2008-01-12
Сообщения: 156
Репутация: +  0  -
Профиль   Отправить e-mail  

Часики

import time

ticks = 0

while 1:
time.sleep(1)
ticks += 1
min = ticks / 60
hour = ticks / 3600
sec = ticks % 10
print hour, min, sec
Я так делал :) C if не красиво.



Офлайн

#8 Фев. 10, 2009 16:52:42

Pydj
От:
Зарегистрирован: 2009-02-07
Сообщения: 55
Репутация: +  0  -
Профиль   Отправить e-mail  

Часики

Я бы немного подкорректировал:

 import time

ticks = 0

while 1:
time.sleep(1)
ticks += 1
min = ticks / 60
hour = ticks / 3600
sec = ticks % 60
print hour,'.',min,'.', sec



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version