无限的计时器

时间:2012-03-13 17:29:55

标签: python timer

我正在编写一个脚本,它将打印一个计时器,并试图重用这样的函数:

def timer(m,x):
    for i in range(1,x):
        sys.stdout.write('\r%s\b%d' % (m,i))
        sys.stdout.flush()
        sleep(1)
        sys.stdout.write('\r  \b')

现在,我希望显示计时器的脚本部分是这样的:

host_alive = "ping -c1 myServer"
cmdStat, cmdOut = commands.getstatusoutput(host_alive)

while True:
    if cmdStat != 0:
        (cmdStat,cmdOut) = commands.getstatusoutput(host_alive)
        print "Still NOT ready!!"
    else:
        break

如何在不指定range()的情况下打印计时器?有没有解决方法? 干杯!!

3 个答案:

答案 0 :(得分:2)

def timer(m):
    i = 0
    while True:
        sys.stdout.write('\r%s\b%d' % (m,i))
        sys.stdout.flush()
        sleep(1)
        sys.stdout.write('\r  \b')
        i = i + 1

答案 1 :(得分:2)

首先,commands模块已弃用,并由subprocess模块替换。

其次,要在python中表示无穷大,您可以使用float('inf')。它象征着你指的是无限。

def timer(m): 
    i = 0
    while i<float('inf'): #this is symbolic and in essence similar to while True
        sys.stdout.write('\r%s\b%d' % (m,i))
        sys.stdout.flush()
        sleep(1)
        sys.stdout.write('\r  \b')
        i += 1

答案 2 :(得分:1)

while循环可能是更好的选择。例如:

def timer(max):
    while counter > 0:
        print '%d seconds remain' % max
        sleep(1)
        max -= 1