在python中创建一个计时器

时间:2013-08-23 15:07:41

标签: python time

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

我想创建一种秒表,当分钟达到20分钟时,会弹出一个对话框,对话框不是问题。但是我的分钟变量在这段代码中没有增加。

13 个答案:

答案 0 :(得分:52)

请参阅线程中的Timer Objects

怎么样

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()

如果你想要传递timeout函数的参数,你可以在计时器构造函数中给它们:

def timeout(foo, bar=None):
    print('The arguments were: foo: {}, bar: {}'.format(foo, bar))

t = Timer(20 * 60, timeout, args=['something'], kwargs={'bar': 'else'})

或者您可以使用functools.partial创建绑定函数,也可以传入实例绑定方法。

答案 1 :(得分:26)

使用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 ">>>>>>>>>>>>>>>>>>>>>", mins
        # Sleep for a minute
        time.sleep(60)
        # Increment the minute total
        mins += 1
    # Bring up the dialog box here

答案 2 :(得分:6)

我使用timedelta对象。

from datetime import datetime, timedelta

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

答案 3 :(得分:2)

除了必须进行以下替换外,您的代码是完美的:

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

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

但这是此问题的另一种解决方案:

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

答案 4 :(得分:1)

mins = minutes + 1

应该是

minutes = minutes + 1

另外,

minutes = 0

需要在while循环之外。

答案 5 :(得分:1)

我想创建一种秒表,当分钟达到20分钟时,会出现一个对话框

您只需要在指定时间内睡觉。 time.sleep()需要几秒钟才能睡眠,所以20 * 60就是20分钟。

import time
run = raw_input("Start? > ")
time.sleep(20 * 60)
your_code_to_bring_up_dialog_box()

答案 6 :(得分:1)

# 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 

答案 7 :(得分:1)

import time 

...

def stopwatch(mins):
   # complete this whole code in some mins.
   time.sleep(60*mins)

...

答案 8 :(得分:0)

您可能正在寻找一个Timer对象:http://docs.python.org/2/library/threading.html#timer-objects

答案 9 :(得分:0)

尝试使用这样的while循环:

minutes = 0

while run == "start":
   current_sec = timer()
   #print current_sec
   if current_sec == 59:
      minutes = minutes + 1
      print ">>>>>>>>>>>>>>>>>>>>>", mins

答案 10 :(得分:0)

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.

答案 11 :(得分:0)

String add = "INSERT INTO time_table VALUES(?, ?, ?, ?, ?,?,?,?,?)";

try (PreparedStatement insert = connection.prepareStatement(add)) {

    insert.setString(1, coursename);
    insert.setString(2, coursecode);
    insert.setString(3, days);
    insert.setString(4, year);
    insert.setString(5, dep);
    insert.setString(6, time);
    insert.setString(7, hall);
    insert.setString(8, lecturer);
    insert.setString(9, credithours);

    insert.executeUpdate();
}

我实际上是在寻找一个计时器,而你的代码似乎有效,你的会议记录没有被计算的可能原因是,当你这么说时

  

分钟= 0

然后

  

分钟=分钟+ 1

与说

相同
  

mins = 0 + 1

我打赌每次打印分钟时都会显示你&#34; 1&#34;因为我刚刚解释过的,&#34; 0 + 1&#34;总会产生&#34; 1&#34;。

首先要做的是放置

  

分钟= 0

在你的while循环之外的

声明。之后你可以删除

  

分钟=分钟+ 1

行,因为在这种情况下你真的不需要另一个变量,只需用

替换它
  

分钟=分钟+ 1

这样分钟将以&#34; 0&#34;的值开始,接收&#34; 0 + 1&#34;的新值,接收&#34; 1 + 1&的新值#34;,接收&#34; 2 + 1&#34;等的新值

我意识到很多人已经回答了这个问题,但我认为如果你能看出你犯了什么错误并尝试修复它,那么它会更有帮助,学习更明智。希望它有所帮助。另外,感谢计时器。

答案 12 :(得分:0)

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)

这项工作非常适合时间秒。