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: 代入前に参照されたローカル変数 'mc'

どうしてか分かりません。誰か助けてください。これは単なる構文の問題であり、これに関する適切なドキュメントが見つかりません。

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 に答える