私がプロジェクトを作っているとしましょう、マスターファイルであるmaster.pyとしましょう。Pythonの効率性:私がインポートしているもののものをインポートしていますか?
#this is master.py
import a
import b
for i in range (whatever):
for j in range (whatever):
a.main(i)
b.main(j)
a、bは、私が作った他のサブ機能であり、(簡単に微調整のための)他のテキストファイルです。
#this is a.py
def main(i):
from numpy import sin
return sin(i)
及びB::
#this is b.py
def main(j):
from random import uniform
return uniform(0, j)
master.pyは、関数aを呼び出し、多くの時間bの。今度は、あるとしましょうそれが起こるたびに、それはaで罪を、bで罰金を輸入します。これは効率的ではありませんが、私はそれを回避する方法はわかりません(aとbをmaster.pyと同じテキストファイルに入れますが、これはデバッグの理由からしたくありません)。代わりにmaster.pyにsinとuniformをインポートするためのステートメントを入れようとしましたが、aとbを呼び出すと、sinとuniformがインポートされないので失敗します。私はサブルーチンでそれらをインポートする必要があると思いますか?どういうわけか、master.pyで罪と統一をインポートし、それをaとbに渡すことができるので、毎回インポートする必要はありませんか?
「これは効率的ではない」 - あなたはそのための証拠を持っていますか? (つまり、あなたのコードは、結果としてゆっくり実行している?) –
注簡単な解決策は、(私はそれが実際にPERFの違いを主張していないよが)単純な機能のうち、とまで 'import'sをホイストすることです'a.py'と' b.py'のトップレベルです。 –
それが不明な場合は申し訳ありませんが、それはちょうど発言でした。同じことを何度も何度もインポートするのは効率的ではないと思います。私は実際に私のマスタープログラムを実際に構築していません、私はそれを効率的にする方法を計画しています。 – iammax