reモジュールからfindall()を使用するだけでよいとしましょう。これを行う方が効率的ですか?
from re import findall
また
import re
実際に速度/メモリ使用量などに違いはありますか?
インポートに違いはありませんが、アクセスにわずかな違いがあります。
あなたがとして機能にアクセスするとき
re.findall()
Pythonは、最初にグローバルスコープでモジュールを検索し、次にモジュールdictでfindallを検索する必要があります。ループ内で何千回も呼び出している場合は、違いが生じる可能性があります。
疑わしい場合は、時間を計ってください。
from timeit import Timer
print Timer("""re.findall(r"\d+", "fg12f 1414 21af 144")""", "import re").timeit()
print Timer("""findall(r"\d+", "fg12f 1414 21af 144")""", "from re import findall").timeit()
10,000,000 回の呼び出しを 5 回以上繰り返すと、次の結果が得られます。
re.findall(): 123.444600105
findall(): 122.056155205
findall()
を使用するよりも、直接使用する方がわずかながら使用上の利点があるようですre.findall()
。
ただし、実際の import ステートメントの速度は大幅に異なります。私のコンピューターでは、次の結果が得られます。
>>> Timer("import re").timeit()
2.39156508446
>>> Timer("from re import findall").timeit()
4.41387701035
そのimport re
ため、実行速度が約 2 倍になるようです。ただし、実際のインポートではなく、インポートされたコードの実行がボトルネックになっていると思われます。
インポート後にローカル名前空間にreの名前が表示されることを除いて、違いはありません。