明確にするために、モジュールの本体のコードは、モジュールがインポートされるたびに実行されるわけではありません。一度だけ実行され、その後、将来のインポートでは、再作成するのではなく、既に作成されたモジュールが検索されます。sys.modules を見て、キャッシュされたモジュールのリストを確認してください。
ただし、問題がプログラムの実行後の最初のインポートにかかる時間である場合は、おそらく python dict 以外の方法を使用する必要があります。おそらく最善の方法は、dbm モジュールの 1 つである sqlite データベースなど、ディスク上のフォームを使用することです。
インターフェイスの変更を最小限に抑えるには、 shelve モジュールが最適なオプションです。これにより、dbm モジュール間に非常に透過的なインターフェイスが配置され、任意の python dict のように動作し、picklable 値を保存できるようになります。次に例を示します。
# Create dict with a million items:
import shelve
d = shelve.open('path/to/my_persistant_dict')
d.update(('key%d' % x, x) for x in xrange(1000000))
d.close()
その後、次のプロセスで使用します。検索はディスク上のフォームで要求されたキーに対してのみ実行されるため、大きな遅延は発生しないはずです。したがって、すべてをメモリにロードする必要はありません。
>>> d = shelve.open('path/to/my_persistant_dict')
>>> print d['key99999']
99999
これは実際の dict よりも少し遅く、すべてのキーを必要とする処理 (たとえば、印刷しようとする) を行うとロードに時間がかかりますが、問題は解決する可能性があります。