[解決済み] Pythonのtimeitで「グローバル名'foo'が定義されていない」と表示される件
2023-02-04 06:42:02
質問
Pythonの文の実行にかかる時間を調べようと思って、ネットで調べたら、標準ライブラリにある timeit というモジュールを提供していることがわかりました。
import timeit
def foo():
# ... contains code I want to time ...
def dotime():
t = timeit.Timer("foo()")
time = t.timeit(1)
print "took %fs\n" % (time,)
dotime()
しかし、これではエラーが発生します。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in dotime
File "/usr/local/lib/python2.6/timeit.py", line 193, in timeit
timing = self.inner(it, self.timer)
File "<timeit-src>", line 6, in inner
NameError: global name 'foo' is not defined
私はまだPythonの初心者で、Pythonが持つすべてのスコープの問題を完全に理解しているわけではありませんが、なぜこのスニペットが動作しないのかわかりません。何か考えがありますか?
どのように解決するのですか?
この行を変更してください。
t = timeit.Timer("foo()")
これに
t = timeit.Timer("foo()", "from __main__ import foo")
一番下にあるリンク先を確認してください。
timeitモジュールに自分で定義した関数にアクセスさせるには、import文を含むsetupパラメータを渡します。
私のマシンでテストしてみたところ、変更した内容で動作しました。
関連
-
[解決済み] インスタンスのクラス名を取得する?
-
[解決済み] ディクショナリーで最大値を持つキーを取得する?
-
[解決済み] Pythonのsuper()は多重継承でどう動くのか?
-
[解決済み】Pythonの「private」メソッドは、なぜ実際にはprivateではないのですか?
-
[解決済み] DataFrameの文字列、dtypeがobjectの場合
-
[解決済み] pandasのDataFrameから空のセルを含む行を削除する
-
[解決済み] Pythonの要素別タプル演算(sumなど
-
[解決済み] PythonからSMTPを使用してメールを送信する
-
[解決済み] 新しいpip backtrackingの実行時問題の解決
-
[解決済み] 認証プラグイン 'caching_sha2_password' はサポートされていません。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] バブルソートの宿題
-
[解決済み] Pythonの要素別タプル演算(sumなど
-
[解決済み] python-requests モジュールからのすべてのリクエストをログに記録します。
-
[解決済み] PyMongoで.sortを使用する
-
[解決済み] Ctrl-CでPythonスクリプトを終了できない
-
[解決済み] Cythonのコードを含むPythonパッケージはどのように構成すればよいのでしょうか?
-
[解決済み] djangoフレームワークでフォームフィールドから値を取得するには?
-
[解決済み] Pythonによる一対のクロスプロダクト [重複] (英語)
-
[解決済み] Flaskで非同期タスクを作る
-
[解決済み] データクラスとtyping.NamedTupleの主な使用例