shelf-like list?
Chris Rebert
clp2 at rebertia.com
Sun Aug 15 01:26:32 EDT 2010
On Sat, Aug 14, 2010 at 5:13 PM, kj <no.email at please.post> wrote:
> In <af7fdb85-8c87-434e-94f3-18d8729bf9be at l25g2000prn.googlegroups.com> Raymond Hettinger <python at rcn.com> writes:
>>On Aug 12, 1:37=A0pm, Thomas Jollans <tho... at jollybox.de> wrote:
>>> On Tuesday 10 August 2010, it occurred to kj to exclaim:
>>>
>>> > I'm looking for a module that implements "persistent lists": objects
>>> > that behave like lists except that all their elements are stored
>>> > on disk. =A0IOW, the equivalent of "shelves", but for lists rather
>>> > than a dictionaries.
>> . . .
>>> You could simply use pickle to save the data every once in a while.
>
>>That is a very reasonable solution.
>
> Sorry I don't follow. Some sample code would be helpful.
I would assume something along the lines of (untested):
from pickle import dump
MOD_THRESHOLD = 42
class PersistentList(list):
def __init__(self, filepath):
self.filepath = filepath
self._mod_count = 0
def save(self):
with open(self.filepath, 'w') as f:
dump(self, f)
self._mod_count = 0
def append(self, *args, **kwds):
super(PersistentList, self).append(*args, **kwds)
self._mod_count += 1
if self._mod_count >= MOD_THRESHOLD:
# obviously time-since-last-dump or other
# more sophisticated metrics might be used instead
self.save()
# define similar wrappers for list's other mutator methods:
__delitem__, __iadd__, __imul__, __setitem__, extend, insert, pop,
remove, etc.
# using decorators should help decrease code duplication
Cheers,
Chris
--
http://blog.rebertia.com
More information about the Python-list
mailing list