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