Timeit Python。它是如何工作的?

1 投票
2 回答
1119 浏览
提问于 2025-04-17 05:29

我想要测量一个函数的执行时间,打算使用timeit这个库。不过我在网上找不到好的例子。我需要测量的函数是“largest_eigenvector”,它在maxcut库里,这个函数需要一个图G作为输入,而这个图是通过networkx库里的一个函数返回的。

所以我想要测量这段代码的执行时间:

import maxcut as mc 
import networkx as nx 
G = nx.complete_graph(3)

mc.largest_eigenvector(G)

这段代码显然是可以正常工作的。然后为了测量它的时间,我这样做了:

s = """
    import maxcut as mc 
    import networkx as nx 
    G = nx.complete_graph(3)
    """
t = timeit.Timer(s, 'mc.largest_eigenvector(G)')

但是它报错了:
UnboundLocalError: local variable 'mc' referenced before assignment(局部变量'mc'在赋值前被引用)

我不知道为什么。请大家帮帮我,这只是个语法问题,我找不到合适的文档来解决这个问题。

2 个回答

2

试试这个:

def tmp():
    import maxcut as mc 
    import networkx as nx 
    G = nx.complete_graph(3)
    mc.largest_eigenvector(G)

t = timeit.Timer(s, 'tmp()')

下面这个也可能有效:

t = timeit.Timer(setup=s, stmt='mc.largest_eigenvector(G)')
4

你的语句和设置搞错了。把参数传给 Timer() 的顺序调换一下。

撰写回答