You can use klepto , which provides constant caching to memory, disk, or database.
dude@hilbert>$ python Python 2.7.6 (default, Nov 12 2013, 13:26:39) [GCC 4.2.1 Compatible Apple Clang 4.1 ((tags/Apple/clang-421.11.66))] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> from klepto.archives import file_archive >>> db = file_archive('foo.txt') >>> db['1'] = 1 >>> db['max'] = max >>> squared = lambda x: x**2 >>> db['squared'] = squared >>> def add(x,y): ... return x+y ... >>> db['add'] = add >>> class Foo(object): ... y = 1 ... def bar(self, x): ... return self.y + x ... >>> db['Foo'] = Foo >>> f = Foo() >>> db['f'] = f >>> db.dump() >>>
Then, after restarting the interpreter ...
dude@hilbert>$ python Python 2.7.6 (default, Nov 12 2013, 13:26:39) [GCC 4.2.1 Compatible Apple Clang 4.1 ((tags/Apple/clang-421.11.66))] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> from klepto.archives import file_archive >>> db = file_archive('foo.txt') >>> db file_archive('foo.txt', {}, cached=True) >>> db.load() >>> db file_archive('foo.txt', {'1': 1, 'add': <function add at 0x10610a0c8>, 'f': <__main__.Foo object at 0x10510ced0>, 'max': <built-in function max>, 'Foo': <class '__main__.Foo'>, 'squared': <function <lambda> at 0x10610a1b8>}, cached=True) >>> db['add'](2,3) 5 >>> db['squared'](3) 9 >>> db['f'].bar(4) 5 >>>
Get the code here: https://github.com/uqfoundation
Mike McKerns May 21 '14 at 13:46 2014-05-21 13:46
source share