2013-10-17 18 views
0
import time 

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

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

非常感谢。

回答

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

+0

我不知道这是可能的,但如果我按下Enter键,它说:“我一直在运行5秒钟”,然后我机10秒后进入, python可以删除初始输出并将其更改为15秒。 (试图避免滚动时间输出) – user1539175

+0

@ user1539175,看看http://stackoverflow.com/questions/6169217/replace-console-output-in-python –

+0

@BiRico问题是,鉴于上面的例子使用'raw_input',你使用Enter键来获得下一行。如果你想避免这种情况,实际的答案会变得更加复杂。 –

0

一次一个问题。

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

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

0

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

如果您正在查找当前正在运行的进程的正常运行时间,请使用OS通过子进程模块查询该进程以运行命令行操作,如'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() 
相关问题