我在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()
我之前是新手,并且以前没有使用过线程,所以我不确定如何解决这个问题。还有更好的方法吗?
答案 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
略有不同