Python: многопоточность. Простейший таймер
Python, проект 21.01.2010Была в visual basic 6.0, на котором я когда-то программировал такая тема: если запустить долгий или бесконечный цикл, то прога как бы повисала, то есть на кнопки я жать уже не мог, пока цикл не кончится. Чтобы так не происходило надо было в теле цикла подписывать “doevents” или как-то так, чтобы оно при каждой итерации шло и исполняло накопленные события.
В Python естесственно тоже самое, однако реализован другой механизм: потоки. То есть по сути я могу создать многопоточное приложение, что собственно тут в двух словах и опишу.
Уже упоминал, что в моем секретном проекте таскменеджера нужен таймер. Вот вам общая концепция:
import thread, time
def timer_print():
while 1: # бесконечный цикл
time.sleep(1)
thread.start_new_thread(timer_print,())
Только есть одна проблема =) таймер пока что не остановить и приходится перезапускать. Однако решение скорее всего будет такое: при запуске проги, запускается поток таймера, который в переменной хранит время, прошедшее с начала запуска проги. Далее в нужный момент выхватываем время начала и время конца. Еще вариант - наверняка Python как и php имеет переменную “секунды с момента запуска линукса в 1970 году” - это по идее аналог того, что предложено выше и поток не нужен.
Зато нашел по поводу потоков пост в одном интересном блоге:

Свежие комментарии