Timer python 3 примеры

Creating a timer in python

I want to create a kind of stopwatch that when minutes reach 20 minutes, brings up a dialog box, The dialog box is not the problem. But my minutes variable does not increment in this code.

Hey Guys, I don’t think my question is been answered The concept is to write a code that pops up a dialog box after some specified that time

Your code attempts to print a timer tick every minute. Do you want the final code to do that, or just pop up a dialog box?

14 Answers 14

from threading import Timer def timeout(): print("Game over") # duration is in seconds t = Timer(20 * 60, timeout) t.start() # wait for time completion t.join() 

Should you want pass arguments to the timeout function, you can give them in the timer constructor:

def timeout(foo, bar=None): print('The arguments were: foo: <>, bar: <>'.format(foo, bar)) t = Timer(20 * 60, timeout, args=['something'], kwargs=) 

Or you can use functools.partial to create a bound function, or you can pass in an instance-bound method.

OKay, so your code means when t is started it executes anything in the timeout function in that time interval?

You can really simplify this whole program by using time.sleep :

import time run = raw_input("Start? > ") mins = 0 # Only run if the user types in "start" if run == "start": # Loop until we reach 20 minutes running while mins != 20: print(">>>>>>>>>>>>>>>>>>>>> <>".format(mins)) # Sleep for a minute time.sleep(60) # Increment the minute total mins += 1 # Bring up the dialog box here 

@user2711485 — It suspends the computer for however many seconds you tell it (in this case 60, which is a minute). In other words, it is saying «do nothing until this time runs out».

Читайте также:  Context listener in java

Is it possible to have other code running while using time.sleep() eg if you were making a game could the timer run in the background or would everything stop when time.sleep() is called?

@Qwertieϟ — Everything would be suspended until the call to time.sleep finished. That is the purpose of time.sleep : to stop program execution for a certain period of time.

from datetime import datetime, timedelta . period = timedelta(minutes=1) next_time = datetime.now() + period minutes = 0 while run == 'start': if next_time  

While this works, constantly running while loops can consume a lot of processing power. Adding a sleep period (even only a second) can greatly reduce that usage.

Definitely. Busy waiting loops are "considered an anti-pattern and should be avoided, as processor time that could be used to execute a different task is instead wasted on useless activity."

Your code's perfect except that you must do the following replacement:

minutes += 1 #instead of mins = minutes + 1 
minutes = minutes + 1 #instead of mins = minutes + 1 

but here's another solution to this problem:

def wait(time_in_seconds): time.sleep(time_in_seconds) #here it would be 1200 seconds (20 mins) 

needs to be outside of the while loop.

Also, minutes = 0 needs to be outside of the while loop if you are going to stick with this code. But really, he should probably just use something better suited to the task.

I want to create a kind of stopwatch that when minutes reach 20 minutes, brings up a dialog box.

All you need is to sleep the specified time. time.sleep() takes seconds to sleep, so 20 * 60 is 20 minutes.

import time run = raw_input("Start? > ") time.sleep(20 * 60) your_code_to_bring_up_dialog_box() 
# this is kind of timer, stop after the input minute run out. import time min=int(input('>>')) while min>0: print min time.sleep(60) # every minute min-=1 # take one minute 
import time . def stopwatch(mins): # complete this whole code in some mins. time.sleep(60*mins) . 
import time mintt=input("How many seconds you want to time?:") timer=int(mintt) while (timer != 0 ): timer=timer-1 time.sleep(1) print(timer) 

This work very good to time seconds.

Using a timer object could get tricky if the action it triggers is non-trivial. You have to deal with thread synchronization issues if you use a timer.

Try having your while loop like this:

minutes = 0 while run == "start": current_sec = timer() #print current_sec if current_sec == 59: minutes = minutes + 1 print ">>>>>>>>>>>>>>>>>>>>>", mins 
import time def timer(n): while n!=0: n=n-1 time.sleep(n)#time.sleep(seconds) #here you can mention seconds according to your requirement. print "00 : ",n timer(30) #here you can change n according to your requirement. 
import time def timer(): now = time.localtime(time.time()) return now[5] run = raw_input("Start? > ") while run == "start": minutes = 0 current_sec = timer() #print current_sec if current_sec == 59: mins = minutes + 1 print ">>>>>>>>>>>>>>>>>>>>>", mins 

I was actually looking for a timer myself and your code seems to work, the probable reason for your minutes not being counted is that when you say that

I'm betting that every time you print mins it shows you "1" because of what i just explained, "0+1" will always result in "1".

What you have to do first is place your

declaration outside of your while loop. After that you can delete the

line because you don't really need another variable in this case, just replace it with

That way minutes will start off with a value of "0", receive the new value of "0+1", receive the new value of "1+1", receive the new value of "2+1", etc.

I realize that a lot of people answered it already but i thought it would help out more, learning wise, if you could see where you made a mistake and try to fix it.Hope it helped. Also, thanks for the timer.

Источник

Делаем свой таймер на Python

У нас когда-то был мини-проект: сделать свой таймер-напоминалку, который спрашивает, про что вам напомнить, а потом выдаёт сообщение через нужное время. В прошлый раз мы его сделали на JavaScript, теперь напишем на Python. Потому что Python — это модно, красиво и приятно.

Отличия и особенности

JavaScript прекрасен тем, что его можно запустить в консоли любого современного браузера. Это для него родная среда, и JS легко работает со страницами, объектами на ней, вкладками браузера и всем, что с ним связано.

Python — более универсальный язык, который работает не только с браузерами, поэтому для него нужен отдельный интерпретатор. Интерпретатор — это программа, которая берёт исходный код и выполняет команду за командой. Вы можете написать отличный код, но чтобы его исполнить, вам всегда нужен будет интерпретатор.

Есть два способа запустить Python-код:

1. Поставить Python себе на компьютер — этот способ хорош, если вы решили основательно изучить язык или просто любите, когда всё быстро и под контролем. Скачать Python можно с официального сайта — есть версии для всех основных операционных систем.

Из минусов — нужно разбираться в параметрах установки и настройки и уметь работать с командной строкой. Плюсы — полный контроль и быстродействие.

2. Использовать онлайн-сервисы, например, этот: onlinegdb.com/online_python_compiler. Работает точно так же — пишете код, нажимаете кнопку Run и смотрите на результат.

Минусы: так как это онлайн-сервис, им пользуется одновременно много человек, поэтому быстродействия от него ждать не стоит. С подключением внешних модулей тоже могут возникнуть проблемы, но с этим можно разобраться, если потратить немного времени.

Плюс: не нужно ничего настраивать и устанавливать, всё работает сразу из браузера. Есть подсветка синтаксиса, сообщения об ошибках и возможность сохранения кода.

Сейчас мы напишем таймер с оглядкой на онлайновый сервис. А отдельно ещё расскажем об установке.

Исходный код на JavaScript

// Спрашиваем текст напоминания, который нужно потом показать пользователю var text = prompt('О чём вам напомнить?'); // Тут будем хранить время, через которое нужно показать напоминание var time = prompt('Через сколько минут?'); // Чтобы работать со временем в JavaScript, нам нужно перевести его в миллисекунды. Для этого число минут умножаем на 60 тысяч: time = time * 60 * 1000; // Ставим таймер на нужное время с помощью функции setTimeout setTimeout(function () < // Выводим на экран текст напоминания, который хранится в переменной text alert(text); // Привлекаем внимание к окну мигающим заголовком titleAlert(); // В самом конце функции указываем время, через которое она должна сработать >, time);
  • спросили текст напоминания;
  • выяснили, через сколько минут нужно напомнить;
  • поставили таймер на нужное время;
  • в нём написали, что когда время выйдет, надо вывести сообщение и помигать заголовком страницы.

Особенность Python в том, что в нём нет встроенных средств работы с браузером и его вкладками, поэтому помигать заголовком пока не получится. С другой стороны, Python не зависит от браузера, поэтому будем использовать штатные средства ввода и вывода сообщений.

Простая реализация на Python

Самое простое, что можно сделать — поставить программу на паузу на нужное время, а потом вывести сообщение. Для этого подключаем стандартный модуль time — он отвечает за работу со временем.

Модуль в Python — это уже готовый python-файл, где собраны запчасти, которые помогают решать какую-то узкую задачу: функции и классы. Например, замерять время, работать с математическими функциями или календарём.

Чтобы сделать паузу, используют команду time.sleep(). Time — это название модуля, который мы подключили, а sleep — функция, которая находится внутри модуля. Её задача — подождать нужное количество секунд, а потом продолжить выполнение программы.

# Подключаем нужный модуль import time # Спрашиваем текст напоминания, который нужно потом показать пользователю print("О чём вам напомнить?") # Ждём ответа пользователя и результат помещаем в строковую переменную text text = str(input()) # Спрашиваем про время print("Через сколько минут?") # Тут будем хранить время, через которое нужно показать напоминание local_time = float(input()) # Переводим минуты в секунды local_time = local_time * 60 # Ждём нужное количество секунд, программа в это время ничего не делает time.sleep(local_time) # Показываем текст напоминания print(text)

Что дальше: многозадачность и оптимизация

Наша программа уже работает как нужно, но её можно улучшить. Дело в том, что ставить весь код на паузу — не самое удачное решение с точки зрения производительности. Представьте, что вам нужно поставить себе несколько напоминаний на разное время. С таким подходом нам придётся выяснять, какое сработает раньше, потом корректировать время паузы для следующего напоминания и так далее.

Можно сделать так: выносить напоминания в отдельные потоки. Это как подпрограмма, которая работает параллельно с нашей программой и не сильно зависит от неё. Это позволит не ждать первого события, а запускать их одновременно. Но про всё это — в следующем материале.

Источник

Оцените статью