Python中的计时器

时间:2016-02-28 06:34:29

标签: python timer

我正在解决一个需要每45秒打印一次的问题。所以我使用了time.sleep(45)并编写了如下代码:

import timer

def print_data():
   print "Hello World!"
   time.sleep(45)

while True:
   print_data()

我有几个问题,我正在努力理解和学习。我重新搜索了这个,但无法得到我正在寻找的答案。请在下面找到我的疑问:

  1. 如何连续每隔45秒等时间连续打印上述内容1小时?

  2. 我们可以给一个随机值说,等待时间为30-45秒。那么它可以等待30-45秒之间的任何值?

  3. 当我每隔60秒刷新/等待4-5小时计时器时,RAM或CPU的行为如何?这会以任何方式影响CPU或RAM吗?

  4. 请帮助我理解这些问题。任何帮助,将不胜感激。提前谢谢。

2 个答案:

答案 0 :(得分:4)

这应该可以满足您的需求:

import time
from random import randint

def print_data():
    print "Hello World!"
    time.sleep(randint(30, 45))

def print_data_for(total_time):
    start_time = time.time()
    while time.time() < start_time + total_time:
        print_data()

print_data_for(60*60)  # 1 hour

至于CPU / RAM使用情况,我的经验(我有一个基于sleep的脚本打印监控另一个进程的常规状态消息)是这个过程在空闲时根本不是很贵,这在此确认:Python - is time.sleep(n) cpu intensive?

答案 1 :(得分:1)

您可以打印每秒的随机值,并等待键盘中断,因为time.sleep()不执行任何操作。

    import time
    from random import randint 

    def print_data(time, data):
        start_time = time.time()
        if time.time() < start_time + time:
              pass
        except KeyBoardInterrupt:
              data = raw_input("what's your value?")
              print data
        else:
              print data

    data = "Hello World!"

    while True:
          print_data(data)
          if time.time() - start_time > (60*5):
             break
          print "Done!"

另外,为了了解您的CPU和RAM使用情况,可以使用psutil库https://pypi.python.org/pypi/psutil,psutil是一个模块,提供一个接口,用于以便携方式检索有关正在运行的进程和系统利用率(CPU,内存)的信息。使用Python,实现ps,top和Windows任务管理器等工具提供的许多功能。

它目前支持Linux,OS X,FreeBSD和Windows,使用2.4到3.1的Python版本,使用独特的代码库。