0
import time

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

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

非常感谢。

4

3 回答 3

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,然后打印出运行时。

于 2013-10-17T21:43:50.830 回答
0

一次一个问题。

  1. 您如何找到您的程序在您要计算的点上运行了多长时间?
  2. 你如何检测按键?
  3. 当 2) 发生时,如何让程序产生 1)?

依次尝试每个问题,然后询问您是否需要帮助。

于 2013-10-17T21:46:00.293 回答
0

对于这样一个简单的问题,有很多复杂性和方法。

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

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

使用python中的threading模块包装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()
于 2013-10-17T23:41:40.517 回答