-1

我有以下问题:我需要一个每分钟运行的程序。我已经设法用python的时间模块和无限的while循环来做到这一点。它看起来像这样:

while True:
    time_now = tm.gmtime(tm.time())
    min_now = time_now.tm_min

    if min_now - min_then == 1 or min_now - min_then == -59:

        min_then = min_now

        ......

循环每秒运行大约 150.000 次,虽然我认为一般性能不会受到损害,但我想知道是否有其他选择。

我可以修改 while 循环的重新运行次数吗?或者算法(在汇编程序、机器代码等中)是否在完成后跳回到开头?我可以使用“等待”命令之类的命令吗?这会有所帮助吗?

感谢收听(和回答;)),

最好的祝愿,

最大限度

编辑:

A sleep-command 确实解决了我的问题。我忘了提到重播必须每整整一分钟进行一次。睡眠 60 秒不会令人满意,但是,我使用了西欢的链接提到的方式:执行循环后,我使用sleep(59.9-time_now.tm_sec). 这将 CPU 使用率降低到 1%。出色的。并且:谢谢大家的帮助!我想投票给你,但我没有足够的声誉:D sry

再见!

4

3 回答 3

3

一个简单的方法是在循环中睡觉,例如

import time

while True:
    # do some stuff
    time.sleep(60) #sleeps for a minute

编辑:另外请注意,您需要“导入时间”才能使其正常工作。此外,如果您希望限制它循环的次数,这可能很有用。下面的示例将每分钟循环一次,总共循环 10 次。

import time

for x in xrange(0, 10):
    #do stuff
    time.sleep(60)
于 2013-11-13T11:58:57.520 回答
0

执行此操作的一种常见方法是调用time.sleep,这本质上是您询问的“等待”命令。如果你这样做:

while True:
    time.sleep(60)
    # do stuff

循环最终将大约每分钟运行一次,加上需要多长时间do stuff。文档中提到了一些警告,即不能保证这是一个确切的等待时间,因此您可能仍希望在每次迭代时检查时间(取决于“每分钟一次”的严格程度)。

于 2013-11-13T12:01:00.700 回答
0

使用time.sleep方法:

import time
while True:
    #do something
    time.sleep(60)
于 2013-11-13T12:08:50.027 回答