2016-10-18 12 views
2

Pythonでオブジェクトをあらかじめ計算する方法はありますか?あなたはコンストラクタを使用する場合と同様にPythonであらかじめ計算されたオブジェクト

だけ好き:

master = Tk() 

-計算を事前にしてオブジェクトを保存し、起動時にそれを読むための方法は、それを作成するのではなく、ありますか?

私の心は、作業を保存すること、またはCPUのために事前に行うことです。ああ、これが実際に行われるシナリオを知っていれば、それについて聞いてみたいと思います。

+1

[pickle](https://docs.python.org/2/library/pickle.html)のような意味ですか?私が正しく理解したかどうかわからない – roganjosh

答えて

3

あなたが探しているのは、オブジェクトをシリアル化するpickle moduleです。 Python 2にはpicklecPickleがありますが、同じですが高速ですが、iirc Python 3はpickle(これは、Python 2のcPickleに相当します)しかありません。これにより、あらかじめ計算された属性を持つオブジェクトを保存することができます。

import cPickle as pickle 
import time 

class some_object(object): 
    def __init__(self): 
     self.my_val = sum([x**2 for x in xrange(1000000)]) 

start = time.time() 

obj = some_object() 

print "Calculated value = {}".format(obj.my_val) 
with open('saved_object.pickle', 'w') as outfile: #Save the object 
    pickle.dump(obj, outfile) 

interim = time.time() 

reload_obj = pickle.load(open('saved_object.pickle','r')) 

print "Precalculated value = {}".format(reload_obj.my_val) 

end = time.time() 

print "Creating object took {}".format(interim - start) 
print "Reloading object took {}".format(end - interim) 
+0

うわー、これは絶対に私が探していたものです。私はいつも計算する代わりに私のプログラムを実行するときにスタックにそれらをスローするために唯一の鍋を持っているので、Windowsとボタン内の生成し、stuffし、ファイルに保存することを考えた。 – Lex

+0

私が知っていたことは、Googleでこれを見つけるために呼び出されたシリアライズだったと思います。 – Lex

関連する問題