首页 > 解决方案 > 在不影响它的情况下测量 python 代码的性能

问题描述

我想知道发布和获得回复需要多少时间。我可以使用代码来执行此操作,但是此代码的问题是要花费一些时间,这将影响整个 t0 到响应时间t1t0

是否有另一种方法可以获取与主代码并行运行而不影响它的时间戳?

diff=[]
t0=[];=t1=[];response_time=[]
while i<1000:
    response_rcvd=False
    t0.append(time.time())
    client.publish()
    t1.append(time.time())
    diff.append(t1-t0)
    while not response_rcvd:
        pass
    response_time.append(time.time())

标签: python-3.xperformance

解决方案


看看这个场景,我看不到完全独立于主进程的行之有效的方法,但让我们看看替代方案。

1. 使用时间装饰器:这涉及到使用类似的东西

@timer
def my_func()
    pass
    # enter code here

@timer记录函数时序的装饰器在哪里。可以在此处找到全面的教程

2. 多处理: 我建议您研究的第一个替代方法是在此处使用multiprocessing模块文档;这包括将主函数放在一个进程中,将计时记录器函数放在另一个进程中,然后使用它的一些共享状态方法,例如multiprocessing.Event将计时事件从主进程发送到计时器进程。毕竟,我怀疑这是否完全解决了您的问题,诸如此类的方法event.set()也会像time.time()您逃避的那样花费一些时间。

3. 计时 time.time(): 如果您的主要目标是计时的准确性,则第二种选择将涉及您计时time.time()从程序中实际花费的时间,并在进行最终计算时将其考虑在内。


推荐阅读