mimetypes.guess_type problem

実行時間を計測してみました。

試行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