我正在解决一个需要每45秒打印一次的问题。所以我使用了time.sleep(45)
并编写了如下代码:
import timer
def print_data():
print "Hello World!"
time.sleep(45)
while True:
print_data()
我有几个问题,我正在努力理解和学习。我重新搜索了这个,但无法得到我正在寻找的答案。请在下面找到我的疑问:
如何连续每隔45秒等时间连续打印上述内容1小时?
我们可以给一个随机值说,等待时间为30-45秒。那么它可以等待30-45秒之间的任何值?
当我每隔60秒刷新/等待4-5小时计时器时,RAM或CPU的行为如何?这会以任何方式影响CPU或RAM吗?
请帮助我理解这些问题。任何帮助,将不胜感激。提前谢谢。
答案 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版本,使用独特的代码库。