mimetypes.guess_type problem
- http://lucumr.pocoo.org/2009/3/1/the-1000-speedup-or-the-stdlib-sucks
- http://bugs.python.org/issue5401
実行時間を計測してみました。
試行1:
>>> import timeit >>> setup = "from mimetypes import guess_type" >>> stmt = "guess_type('test.jpg')" >>> print timeit.Timer(stmt = stmt, setup = setup).timeit(1000) 4.73700714111
試行2:
>>> import timeit >>> setup = "import mimetypes" >>> stmt = "mimetypes.guess_type('test.jpg')" >>> print timeit.Timer(stmt = stmt, setup = setup).timeit(1000) 0.0164821147919
補足
上記の試行はそれぞれ、インタプリタを起動しなおして実行する必要があります。
コマンドの実行が、モジュールの中身を書き換えてしまうので。
補足2
より簡単なコードで現象を再現すると、以下のようになります。
foo.py
def foo(): init() print "foo called" return foo() def bar(): print "bar" def init(): global foo print "initialized" foo = bar
試行3:
>>> from foo import foo >>> foo() initialized foo called bar >>> foo() initialized foo called bar
試行4:
>>> import foo
>>> foo.foo()
initialized
foo called
bar
>>> foo.foo()
bar
posted by id:junya_hayashi