如何使按键显示我的程序运行了多长时间?

时间:2013-10-17 21:34:52

标签: python loops runtime

import time

number = 1
while number > 0:
    print "Testing" 
    time.sleep(5) #print every 5 seconds

这只是一个示例循环。我是半初学者,我不知道如何制作按键(任何键都可以)显示程序运行了多长时间。该程序将在Windows 7和Linux上运行。

非常感谢。

3 个答案:

答案 0 :(得分:2)

欢迎使用Stack Overflow和Python!你会喜欢这里。

首先,我将向您展示如何打印代码运行的时间。 time模块包含time()函数,该函数将当前时间作为Unix时间戳(1970年1月1日以来的秒数)获取。如果在函数开头将其分配给变量,则可以在每次循环时调用它,并从当前时间中减去它以获得运行时。和我一起到目前为止?

(您也可以删除number变量和number > 0支票,然后将其替换为True。)

import time

start_time = time.time()
while True:
    print "I've been running for %d seconds!" % (time.time() - start_time) 
    time.sleep(5) #print every 5 seconds

但是你问过每次用户按键时如何获取它。如果你只想要'输入',你可以这样做:

import time

start_time = time.time()
while True:
    print "I've been running for %d seconds!" % (time.time() - start_time) 
    raw_input("Press Enter...")

raw_input()函数将等待用户按Enter键,然后打印出运行时。

答案 1 :(得分:0)

一次出现一个问题。

  1. 如何确定程序在您想要计算的位置运行了多长时间?
  2. 您如何检测按键?
  3. 当2)发生时,你如何让程序产生?
  4. 依次尝试每个问题,然后询问您是否需要帮助。

答案 2 :(得分:0)

这么简单的问题有很多复杂性和方法。

如果您正在查找当前正在运行的进程的运行时间,请使用操作系统通过子进程模块查询该进程以运行命令行操作,例如'ps | grep“foo”'

通常程序一次只做一件事。例如,代码可以工作或查找按键。如果您需要运行必须同时运行两个不同的代码段,则将代码段生成(运行)为单独的线程。对于你的问题,你可以产生两个线程(代码片段),一个用于工作,一个用于查询时间。

使用python中的线程模块来包装worker函数并创建一个查询线程。但是,当工作线程完成时,您还希望查询线程也终止。一种方法是将其定义为守护程序线程。守护程序线程在它们是唯一活着的线程时终止。

例如:

from time import sleep
import datetime
import threading


def do_someting():
    MAX_RUN_TIME = 300 #Seconds
    for i in xrange(MAX_RUN_TIME):
        print i,
        sleep (1)


class worker_thread(threading.Thread):   

    def run(self):
        do_someting()


class keypress_daemon_thread(threading.Thread):   

    def __init__(self):
        threading.Thread.__init__(self) # Initialize the parent class 
        self.daemon = True #  Terminates if only daemon threads are left

    def run(self):
        startTime = datetime.datetime.now()
        while True:
            raw_input()
            timeDelta =  datetime.datetime.now() - startTime
            print 'Up for', timeDelta


if __name__ == '__main__':
    workerThread = worker_thread()
    keyPressThread = keypress_daemon_thread()
    workerThread.start()
    keyPressThread.start()
    workerThread.join()