#!/usr/bin/env python import datetime import shelve import sys import time from os import path from io import BytesIO try: import anydbm except ImportError: import dbm anydbm = dbm from pickle import Pickler def main(): print(sys.version) fname = 'shelf_test_{}'.format(datetime.datetime.now().isoformat()) bucket = anydbm.open(fname, "n") now = time.time() limit = 1000 key = 'some key > some key > other' to_store = set() for i in range(limit): to_store.add(i) f = BytesIO() p = Pickler(f) p.dump(to_store) val = f.getvalue() bucket[key] = val end = time.time() db_file = False try: fsize = path.getsize(fname) except Exception as e: print("file not found? {}".format(e)) try: fsize = path.getsize(fname + '.db') db_file = True except Exception as e: print("file not found? {}".format(e)) fsize = None print("Stored {} in {} filesize {}".format(limit, end - now, fsize)) print(fname) bucket.close() bucket = shelve.DbfilenameShelf(fname, flag="r") if db_file: fname += '.db' print("In file {} {}".format(fname, len(list(bucket.items())))) if __name__ == "__main__": main()