有如下代码:
class Test:
def a(self):
time.sleep(random.uniform(1,3))
print('a done')
def b(self):
time.sleep(random.uniform(1,3))
print('b done')
def c(self):
time.sleep(random.uniform(1,3))
print('C done')
想以多线程的方式运行, 并计算运行时间:
def main():
task = Test()
task_list = [
task.a,
task.b,
task.c,
]
for i in task_list:
# i = run_time_log(i)
t = Thread(target=i)
t.start()
start = time.time()
main()
print(time.time() - start)
问题是,每次运行的时候都是先把最后的 print 弄出来,然后才会打印诸如 a done, b done 之类的信息
所以最终的问题是:如何可以正确的得到这段代码的运行时间,以及为什么会出现这种情况
代码只需要加一行,代码如下: