-1

我想了解 Python 中的计时器。

假设我有一个类似的代码片段:

def abc()
   print 'Hi'  
   print 'Hello'
   print 'Hai'

我想每 1 秒打印一次。最多三倍;即;第一秒我需要检查 printf,第二秒我还需要在第三秒检查。

在我的实际代码变量值将被更新。我需要捕捉到所有变量都在什么时候更新。

谁能告诉我如何做到这一点。

4

7 回答 7

8

time.sleep在这种情况下很好,但如果abc()函数需要半秒才能执行怎么办?还是5分钟?在这种情况下,您应该使用一个Timer对象。

from threading import Timer

def abc():
    print 'Hi'  
    print 'Hello'
    print 'Hai'

for i in xrange(3):
    Timer(i, abc).start()
于 2010-07-23T12:52:02.487 回答
3

使用time.sleep.

import time

def abc():
    print 'Hi'
    print 'Hello'
    print 'Hai'

for i in xrange(3):
    time.sleep(1)
    abc()   
于 2010-07-22T14:06:14.753 回答
0

你应该调查一下time.sleep()。例如:

for i in xrange(5):
  abc()
  time.sleep(3)

这将打印您的行 5 次,中间有 3 秒的延迟。

于 2010-07-22T14:05:58.647 回答
0
import time
def abc()
    for i in range(3):
        print 'Hi'  
        print 'Hello'
        print 'Hai'
        time.sleep(1)
于 2010-07-22T14:06:06.180 回答
0
import time
def abc():
 print 'Hi'
 print 'Hello'
 print 'Hai'

for i in range(3):
 time.sleep(3-i)
 abc()
于 2010-07-22T14:14:12.660 回答
0

通常对我来说这有效......

import time

def abc():
    print 'Hi'
    time.sleep(1)
    print 'Hello'
    time.sleep(1)
    print 'Hai'
    time.sleep(1)

我想你可以猜到之后...

于 2015-03-25T18:58:08.630 回答
-1
import sys
import time

c=':'
sec = 0
min = 0
hour = 0

#count up clock

while True:
for y in range(59):                                                 #hours
    for x in range (59):                                            #min
        sec = sec+1
        sec1 = ('%02.f' % sec)                                      #format
        min1 = ('%02.f' % min)
        hour1= ('%02.f' % hour)
        sys.stdout.write('\r'+str(hour1)+c+str(min1)+c+str(sec1))   #clear and write
        time.sleep(1)
    sec = 0
    sys.stdout.write('\r' + str(hour1) + c + str(min1) + c + '00')  #ensure proper timing and display
    time.sleep(1)
    min=min+1
min = 0
sys.stdout.write('\r' + str(hour1) + c + str(min1) + c + '00')      #ensure proper timing and display
time.sleep(1)
hour=hour+1
于 2017-02-05T20:49:17.090 回答