我试图测量一个函数使用的时间,如下所示:

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 进行网络输入/输出,那么如果您同时进行流式视频或下载软件,则会产生影响.

Python相关问答推荐

acme错误-Veritas错误:模块收件箱没有属性linear_util'

C#使用程序从Python中执行Exec文件

如何在Django基于类的视图中有效地使用UTE和RST HTIP方法?

如果值发生变化,则列上的极性累积和

Pre—Commit MyPy无法禁用非错误消息

利用Selenium和Beautiful Soup实现Web抓取JavaScript表

为一个组的每个子组绘制,

如何在Pyplot表中舍入值

基于行条件计算(pandas)

下三角形掩码与seaborn clustermap bug

提高算法效率的策略?

在Docker容器(Alpine)上运行的Python应用程序中读取. accdb数据库

在二维NumPy数组中,如何 Select 内部数组的第一个和第二个元素?这可以通过索引来实现吗?

如何使用正则表达式修改toml文件中指定字段中的参数值

pandas:在操作pandora之后将pandora列转换为int

如何提高Pandas DataFrame中随机列 Select 和分配的效率?

利用广播使减法更有效率

合并Pandas中的数据帧,但处理不存在的列

如何在networkx图中提取和绘制直接邻居(以及邻居的邻居)?

GEKKO中若干参数的线性插值动态优化