1

我想为一个函数计时,我想使用 timeit 库。我在网上找不到任何好的例子。我必须对 maxcut 库中的函数“largest_eigenvector”进行计时,该函数将由 networkx 库中的函数返回的图 G 作为输入。

所以我想为这段代码计时:

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

我不知道为什么。请有人帮忙,这只是一个语法问题,我找不到合适的文档。

4

2 回答 2

4

您已交换语句和设置。反过来将参数传递给 Timer()。

于 2011-11-02T10:43:13.687 回答
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)')
于 2011-11-02T10:36:12.067 回答