我试图测量一个函数使用的时间,如下所示:
start = time.time()
function("does_something")
end = time.time()
function_time = end - start
然而,每次运行它,我都会得到一个(稍微)不同的解决方案.这是什么原因?
我试图测量一个函数使用的时间,如下所示:
start = time.time()
function("does_something")
end = time.time()
function_time = end - start
然而,每次运行它,我都会得到一个(稍微)不同的解决方案.这是什么原因?
即使计算机中的CPU可能包含多个内核,操作系统中的调度程序也会将小时隙分配给所有要在不同CPU内核上运行的程序.程序获得的时间取决于进程要求处理器时间的多少及其相对优先级.
由于time.time()
返回自纪元以来的时间("墙时间"),因此它将受到调度等因素的影响.
你可以试着用time.process_time()
来代替.
不过,CPU时间并不是唯一的瓶颈.磁盘I/O和网络I/O都比CPU慢几个数量级.像netcat
这样的单个程序很容易使netcat
Mbit/s的网络链路饱和.
因此,如果您的程序try 进行网络输入/输出,那么如果您同时进行流式视频或下载软件,则会产生影响.