import os, random, bsddb, thread DB_FILENAME = "hammer_bsddb.db" def hammer(db): for i in xrange(1000000): rnd = random.random() if rnd < 0.33: # Add/update a value. value = "This is a test"[:int(random.random() * 10)] db[str(int(random.random() * 100000))] = value elif rnd < 0.66: # Read a value. try: x = db[str(int(random.random() * 100000))] except KeyError: pass else: # Delete a value try: del db[str(int(random.random() * 100000))] except KeyError: pass def main(): try: os.remove(DB_FILENAME) except OSError: pass db = bsddb.hashopen(DB_FILENAME, "c") for dummy in range(4): thread.start_new_thread(hammer, (db,)) hammer(db) if __name__ == '__main__': main()