Timeit问题-处理时间-奇怪的数字

时间:2019-04-08 15:30:48

标签: python-3.x timeit

基本上我有一个文件,该文件具有计算某些过程的时间的代码。但是它不能正常工作。如果我将函数的内容放到main中就可以了。

从文件util.py计算错误

import timeit

start_process = 0
finish_process = 0

def starting_process():
    start_process = timeit.default_timer()

def time_process():
    finish_process = timeit.default_timer()
    time_total = finish_process - start_process

    # output running time in a nice format.
    mins, secs = divmod(time_total, 60)
    hours, mins = divmod(mins, 60)

    return "Total running time: %d:%d:%d" % (hours, mins, secs)

在花费4秒的过程中,它显示如下: 238:23:55

如果我将此代码放在没有功能的主程序中,则显示正确: 0:0:4

任何人都可以帮助解释为什么会发生这种情况吗?

谢谢

卢卡斯·安东尼(Lucas Antoni)

1 个答案:

答案 0 :(得分:0)

此功能:

def starting_process():
    start_process = timeit.default_timer()

创建一个局部变量 start_process,设置一个值,然后返回None(因为没有显式的return语句)。函数结束后,该值将丢失。该函数不会影响全局变量start_process

因此,当调用time_process()时,使用start_process的表达式会发现time_process中没有该名称的局部变量,而是找到了设置为0的全局变量。

解决此问题的一种方法是使用

def starting_process():
    global start_process
    start_process = timeit.default_timer()

告诉starting_process变量start_process是全局变量。