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

Problem with Timeit - Processing time - Weird Number

基本上我有一个文件,其中包含计算某些过程时间的代码。但它不能正常工作。如果我将函数的内容放在我的 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

任何人都可以帮助解释为什么会这样?

谢谢,

卢卡斯·安东尼。

这个函数:

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

创建一个局部变量 start_process,设置一个值,然后returns 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是全局变量