import _winreg, thread, time short_string = '1' long_string = '1'*2000 done = False def create_key(): root = _winreg.HKEY_CURRENT_USER key = _winreg.OpenKey(root, 'PythonTestKeys') for i in range(10000): if done: break if i & 1: s = short_string else: s = long_string _winreg.SetValue(key, 'test', _winreg.REG_SZ, s) thread.start_new_thread(create_key, ()) def subkeys(key): num_subkeys, num_values, t = _winreg.QueryInfoKey(key) for i in range(num_values): name = _winreg.EnumValue(key, i) for i in range(num_subkeys): name = _winreg.EnumKey(key, i) try: subkey = _winreg.OpenKey(key, name) except WindowsError: continue subkeys(subkey) subkey.Close() root = _winreg.HKEY_CURRENT_USER key = _winreg.CreateKey(root, 'PythonTestKeys') try: for i in range(10000): subkeys(key) finally: # cleanup done = True time.sleep(1) key = _winreg.DeleteKey(root, 'PythonTestKeys\\test') key = _winreg.DeleteKey(root, 'PythonTestKeys')