在固定时间执行python程序

时间:2014-01-21 16:52:21

标签: python-2.7

我正在python中制作一个小型计算机游戏,运行3分钟。这是一款控制台游戏。屏幕不会每隔几毫秒更新一次,但每隔几秒就会打印出新信息,玩家必须在不同的选项中进行选择。

所以我需要的是,

  1. 能够在3分钟之前运行脚本
  2. 能够在3分钟内运行脚本。
  3. 在遍历定时部分时能够确切知道剩余时间和经过的时间。
  4. 能够将控制转移到另一个脚本,以便在3分钟过后运行。

1 个答案:

答案 0 :(得分:0)

我最终使用线程和锁定了。

from datetime import datetime,timedelta
from threading import Thread, Lock

locker = Lock()

def printsomething(string):
    if string.seconds:
        print string.seconds,"seconds left"
    else:
        print "less than a second left"

def func():
    start_time = datetime.now()
    while True:
        if locker.acquire(False):
            printsomething(timedelta(seconds=180) - (datetime.now()-start_time))
            raw_input("Continue? y/n")
            locker.release()
        else:
            print "Thread ending"
            return

t = Thread(target=func)
t.daemon = True

t.start()
t.join(180)
locker.acquire()
print "program ending"

唯一无法解决的问题是,应该运行3分钟的脚本/ func在3分钟结束后不会立即退出。如果我搞清楚,会更新答案。