如何制作一个计算运行时间的循环?

时间:2018-03-23 13:56:49

标签: python multithreading loops time

我在Python 3和客户端中创建一个简单的客户端/服务器程序我想要一个时钟或打印输出的运行时间。我试图在一个从程序开头开始的循环中创建它,但是在一个线程中,所以代码的其余部分继续运行。

    class time_thread():
        def run(self):

            loop = 0

            while (zetime > -1):
                print(zetime);
                zetime = zetime + 1;
    time_thread.start()
zetime = 0

这是我到目前为止所做的,但它不起作用。它说:

  

time_thread没有属性start()

我之前是新手,并且以前没有使用过线程,所以我不确定如何解决这个问题。还有更好的方法吗?

3 个答案:

答案 0 :(得分:0)

我认为这就是你要找的东西:

import time, sys

zetime = 0
while (zetime > -1):
    sys.stdout.write("\r" + str(zetime))
    sys.stdout.flush()
    time.sleep(1)
    zetime = zetime + 1;

答案 1 :(得分:0)

首先,要使用Thread模块,你必须在类上继承类Thread,这样你就可以使用像start这样的方法。 要计算时间,您可以使用日期时间。


from datetime import datetime
from time import sleep

start_time  = datetime.now()   
sleep(5) # code that you want to calculate.
end_time = datetime.now()   
print(end_time - start_time)   


只需放置此

答案 2 :(得分:0)

因此,我们假设您定义了一个函数elapsed_time,例如:

import time, sys
def elapsed_time(time_start):
    ''' time_start: a time.time()
        Goal: print the elapsed time since time_start '''
    # Allow to stop the counting once bool_time = False in the main program
    global bool_elapsed_time
    # loop while the condition 
    while bool_elapsed_time == True:
        # Note: erase and write below does not work in spyder but in a shell yes
        print ("Elapsed time: {} seconds".format(int(time.time() - time_start))),
        sys.stdout.flush()
        print ("\r"),
        time.sleep(1)
    # erase the line with elapsed time to clean the shell at the end
    sys.stdout.flush()
    print ("\r"),

然后在你的程序中:

import threading
bool_elapsed_time = True
t = threading.Thread(name='child procs', target=elapsed_time, args=(time.time(),))
t.start()
## Here add the job you want to do as an example:
time.sleep(10)
bool_elapsed_time = False #to stop the elapsed time printing

应该做你想做的工作。

注意:我使用的是python 2.7,因此可能与3.x

略有不同